网络库urllib3
urllib3是比urllib库更强大的存在,目前已经有许多的原生系统已经开始使用urllib3。
urllib3具有如下优点:
- 支持HTTP和SOCKS代理
- 支持压缩编码
- 100%测试覆盖率
- 具有链接池
- 线程安全
- 客户端SLL/TLS验证
- 协助处理重复请求和HTTP重定位
- 使用multipart编码上传文件
因为urllib3并不是Python的标准库,所以我们使用之前,需要进行下载安装,具体命令如下所示:
pip install urllib3
#或
conda install urllib3
下面,我们来讲解urllib3库的使用方式。
网络请求
GET请求
首先,在我们使用urllib3库进行网络请求时,需创建PoolManager类的实例,该类用于管理线程池。
下面,我们来通过urllib访问百度,并返回查询的结果,示例如下:
import urllib3
http = urllib3.PoolManager()
url = 'http://www.baidu.com/s'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = http.request('GET', url, fields={
'wd': '机器学习'}, headers=headers)
result = response.data.decode('UTF-8')
print(result)
运行之后,效果如下:
这里,我们通过fields参数指定GET的请求字段。不过,这里先一步讲解了请求头,其实是百度有安全机制,读者可以去掉headers参数试试。会返回百度的安全验证页面。
POST请求
如果需要向服务器提交表单或者比较复杂的数据,就需要使用到POST请求。POST请求比较简单,仅仅只是将请求的第一个参数改为“POST”即可。
示例如下:
import urllib3
http = urllib3.PoolManager