urllib3学习笔记
urllib3简介
urllib3是个功能强大、条理清晰,用于HTTP客户端的第三方模块,许多Python的原生系统已经开始使用urllib3。urllib3提供了很多Python标准库里没有的重要特性:
• 线程安全
• 连接池
• 客户端SSL/TLS验证
• 使用multipart编码上传文件
• Helpers 用于重试请求并处理HTTP重定向
• 支持gzip和deflate编码
• 支持HTTP和SOCKS代理
• 100%的测试覆盖率
发送网络请求
GET请求
使用urllib3模块发送网络请求时,首先需要创建PoolManager对象,通过该对象调用request()方法来实现网络请求的发送。request()方法的语法格式如下:
request(method, url, fields = None, headers = None, ** urlopen_kw)
常用参数说明:
- § method:必选参数,用于指定请求方式,如GET、POST、PUT等
- § url: 必选参数,用于设置需要请求的URL地址
- § fields:可选参数,用于设置请求参数
- § headers:可选参数,用于设置请求头
1、使用request()方法实现GET请求
示例代码如下:
#_*_coding:utf-8_*_
# 作者 :liuxiaowei
# 创建时间 :1/27/22 6:14 PM
# 文件 :request方法实现GET请求.py
# IDE :PyCharm
import urllib3 # 导入urllib3模块
url = "http://httpbin.org/get"
http = urllib3.PoolManager() # 创建连接池管理对象
r = http.request('GET',url) # 发送GET请求
print(r.status) # 打印请求状态码
运行结果:
200
2、使用PoolManager对象向多个服务器发送请求
一个PoolManager对象就是一个连接池管理对象,通过该对象可以实现向多个服务器发送请求。示例代码如下:
#_*_coding:utf-8_*_
# 作者 :liuxiaowei
# 创建时间 :1/27/22 6:14 PM
# 文件 :request方法实现GET请求.py
# IDE :PyCharm
import urllib3 # 导入urllib3模块
urllib3.disable_warnings() # 关闭ssl警告
jingdong_url = 'https://www.jd.com/' # 京东url地址
python_url = 'https://www.python.org/' # Python url地址
baidu_url = 'https://www.baidu.com/' # 百度url地址
http = urllib3.PoolManager() # 创建连接池管理对象
r1 = http.request('GET',jingdong_url) # 向京东地址发送GET请求
r2 = http.request('GET',python_url) # 向python地址发送GET请求
r3 = http.request('GET',baidu_url) # 向百度地址发送GET请求
print('京东请求状态码:',r1.status)
print('python请求状态码:',r2.status)
print('百度请求状态码:',r3.status)
备注
Python3.7, Python3.9.7可以正常运行以上程序,其他版本报错,即使import ssl也不能解决。
接下文 urllib3学习笔记(二)https://developer.aliyun.com/article/1615875?