【有书共读21】Python编程之美 09
Web客户端库
Requests可以完成python HTTP请求的各种相关工作,无缝集成web服务。无需手动把查询字符串添加到URL货对POST数据进行表单编码。使用pip安装Requests:
$pip install requests
Web API
- get方法是HTTP协议的一部分,在RESTful API中,API的设计者选择服务器会使用那些动作,并在api中告诉开发者。除GET外,还有POST、PUT、DELETE等方法。
- URI的基础部分是API的根源。
- 客户端会指定一个特定元素来获取相关书
- 可能还存在一个选项,用来指定不同的媒体类型
JSON解析
json库可以将JSON格式的字符串或文件内容解析为一个python字典,也可以将python字典或列表转换为JSON格式。
XML解析
标准库中有一个XML解析器,通过创建ElementTree对象来保存xml结构,这意味着我们必须逐级迭代,仅需子元素获取内容。使用pip获取:
$pip install untangle
$pip install xmltodict
untangle读取xml文档,返回python对象,其结构逐一映射xml文档的节点和属性。
借助xmltodict可以使用unparse()函数反向将字段转化为xml。xmltodict的流式模式适用于处理无法全部读入内存的文件,并支持命名空间。
web页面数据抽取
web页面数据抽取是使用计算机程序对web页面内容进行筛选,以最恰当的格式收集需要的数据,同时保留数据的原有结构。
lxml
lxml可以快速解析xml和html文档,甚至可以处理解析过程中遇到的错误格式的标记。使用pip获取:
$pip install lxml
使用requests.get获取目标数据的web页面,使用lxml的hml模块进行解析,并将结果存到树状结构变量tree中。
数据序列化
序列化是指将结构化数据转化成一种能够被共享或者存储的格式,保留必要的信息让数传输的接收端能够在内存中重建对象。
数据序列化有:
Pickle:python原生数据序列化模块。
跨语言序列化:Google的protobuf和Apache的avro是常见的两个选项。
压缩:python标准库支持zlib、gzip、bzip2和lzma算法压缩解压数据,并支持创建zip和tar格式的归档文件。
缓冲协议:使用内存减少python对相同数据进行内存内赋值的次数,甚至可以将数据从文件或套接字读入一个已有的内存缓冲区。
分布式系统
网络编程、:asyncio、gevent、twisted、pyzmq、pika。
密码技术
常见方案:ssl和hashlib以及secrets、pyOpenSSL、pynaci libnacl、cryptography、pycrypto、bcrypt。

