我认为所有的答案都很好。但是关于 urllib3 的细节较少。urllib3 是一个非常强大的 Python 的 HTTP 客户端。
为了安装以下两个命令都可以,
urllib3
使用点子,
pip install urllib3
或者您可以从 Github 获取最新代码并使用它们进行安装,
$ git clone git://github.com/urllib3/urllib3.git
$ cd urllib3
$ python setup.py install
那么你准备好了,
只需使用导入 urllib3,
import urllib3
在这里,您需要一个 PoolManager 实例来发出请求,而不是直接创建连接。这将为您处理连接池和线程安全。还有一个 ProxyManager 对象用于通过 HTTP/HTTPS 代理路由请求
在这里您可以参考文档。
示例用法:
>>> from urllib3 import PoolManager
>>> manager = PoolManager(10)
>>> r = manager.request('GET', 'http://google.com/')
>>> r.headers['server']
'gws'
>>> r = manager.request('GET', 'http://yahoo.com/')
>>> r.headers['server']
'YTS/1.20.0'
>>> r = manager.request('POST', 'http://google.com/mail')
>>> r = manager.request('HEAD', 'http://google.com/calendar')
>>> len(manager.pools)
2
>>> conn = manager.connection_from_host('google.com')
>>> conn.num_requests
3
正如urrlib3 文档中所述,urllib3 带来了 Python 标准库中缺少的许多关键功能。
- 线程安全。
- 连接池。
- 客户端 SSL/TLS 验证。
- 使用多部分编码的文件上传。
- 重试请求和处理 HTTP 重定向的帮助程序。
- 支持 gzip 和 deflate 编码。
- 对 HTTP 和 SOCKS 的代理支持。
- 100% 的测试覆盖率。
请按照用户指南了解更多详细信息。
requests
requests 在后台使用urllib3,使创建requests 和检索数据变得更加简单。
一方面,keep-alive 是 100% 自动的,而 urllib3 不是。它还具有事件挂钩,可在触发事件时调用回调函数,例如接收响应
在requests 中,每种请求类型都有自己的功能。因此,您无需创建连接或池,而是直接获取 URL。
使用 pip 安装 requests 只需运行
pip install requests
或者你可以从源代码安装,
$ git clone git://github.com/psf/requests.git
$ cd requests
$ python setup.py install
那么,import requests
这里可以参考官方documentation,
有关会话对象、SSL 验证和事件挂钩等高级用法,请参阅此url。