📅  最后修改于: 2023-12-03 15:23:45.389000             🧑  作者: Mango
urllib3 是 Python 的一个库,用于处理 HTTP 请求。相比于 Python 内置的 urllib 库,它提供了更出色的功能和更好的性能。它支持连接池、线程安全、文件上传等功能。
本文将介绍如何在 Python 中使用 urllib3 库,以及如何使用它的一些高级特性。
urllib3 库可以使用 pip 来安装,在终端中输入以下命令即可:
pip install urllib3
使用 urllib3 发起 HTTP 请求非常简单,只需要导入 urllib3 库并创建一个 PoolManager 对象即可:
import urllib3
http = urllib3.PoolManager()
response = http.request('GET', 'http://httpbin.org/get')
上面的代码发起了一个 GET 请求,并返回了一个 HTTPResponse 对象。我们可以通过该对象获取响应内容:
print(response.data)
urllib3 支持连接池,可以更好地处理大量的请求。默认情况下,它会自动创建一个连接池,并对同一个主机的连接进行重复利用。如果需要对连接池进行更精细的控制,可以自行创建连接池:
import urllib3
http = urllib3.PoolManager(num_pools=4, maxsize=10)
response = http.request('GET', 'http://httpbin.org/get')
上面的代码创建了一个拥有 4 个连接池、每个连接池最多有 10 个连接的 PoolManager 对象。
urllib3 还提供了许多高级功能,如文件上传、 SSL 安全连接等。
使用 urllib3 进行文件上传,我们可以使用 encode_multipart_formdata 函数来将文件数据编码为 multipart/form-data 格式:
import urllib3
url = 'http://httpbin.org/post'
http = urllib3.PoolManager()
with open('test.txt', 'rb') as f:
data = {
'file': (f.name, f, 'text/plain')
}
encoded_data = urllib3.encode_multipart_formdata(data)
headers = {'Content-Type': encoded_data.content_type}
response = http.request('POST', url, body=encoded_data, headers=headers)
urllib3 支持 SSL 安全连接,可以使用 HTTPS 协议进行加密通讯。当使用 HTTPS 协议时,需要注意必须要验证 SSL 证书,以避免安全风险。可以设置 verify 参数为 True 来开启证书验证:
import urllib3
url = 'https://httpbin.org/get'
http = urllib3.PoolManager()
response = http.request('GET', url, verify=True)
本文介绍了如何使用 urllib3 库进行 HTTP 请求,并介绍了一些高级功能,如连接池、文件上传和 SSL 安全连接。希望对 Python 程序员有所帮助。