📜  如何 urllib3 - Python (1)

📅  最后修改于: 2023-12-03 15:23:45.389000             🧑  作者: Mango

如何使用 urllib3 - Python

概览

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)
SSL 安全连接

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 程序员有所帮助。