2023-04-05
python模块
00
请注意,本文编写于 745 天前,最后修改于 40 天前,其中某些信息可能已经过时。

目录

1. 安装 requests
2. 导入 requests 模块
常用请求操作
GET 请求
POST 请求
其他 HTTP 方法
设置请求参数、头部和超时
URL 参数
自定义请求头
超时设置
上传文件
会话管理
常见配置选项
JSON 数据
重试机制
获取响应内容
获取响应状态码和内容
获取响应头
代理设置
Cookie 管理
设置和获取 Cookie
下载文件
SSL 证书验证
禁用 SSL 证书验证(不推荐)
自定义证书路径

requests 是一个用于 HTTP 请求的简单且强大的 Python 库,以下是 requests 常用操作示例。

1. 安装 requests

bash
pip install requests

2. 导入 requests 模块

python
import requests

常用请求操作

GET 请求

python
response = requests.get("https://api.example.com/data") print(response.status_code) # 状态码 print(response.json()) # 获取 JSON 格式响应数据 print(response.text) # 获取文本格式响应数据

POST 请求

python
payload = {"key": "value"} response = requests.post("https://api.example.com/data", json=payload) print(response.json())

其他 HTTP 方法

python
# PUT 请求 response = requests.put("https://api.example.com/data", json={"update": "value"}) # DELETE 请求 response = requests.delete("https://api.example.com/data")

设置请求参数、头部和超时

URL 参数

python
params = {"query": "test"} response = requests.get("https://api.example.com/data", params=params) print(response.url) # 完整的请求 URL

自定义请求头

python
headers = {"Authorization": "Bearer token"} response = requests.get("https://api.example.com/data", headers=headers)

超时设置

python
response = requests.get("https://api.example.com/data", timeout=10)

上传文件

python
files = {"file": ("filename.txt", open("filename.txt", "rb"), "text/plain")} response = requests.post("https://api.example.com/upload", files=files) print(response.status_code)

会话管理

使用 requests.Session() 进行会话管理,可以在同一会话中共享 cookie 和 headers。

python
with requests.Session() as session: session.headers.update({"Authorization": "Bearer token"}) response = session.get("https://api.example.com/data") print(response.json())

常见配置选项

JSON 数据

  • 可以直接发送和解析 JSON 数据:
python
response = requests.post("https://api.example.com/data", json={"key": "value"}) print(response.json()) # 自动解析 JSON 响应

重试机制

虽然 requests 没有内置重试机制,但可以借助 urllib3 提供的 Retry 类:

python
from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry session = requests.Session() retry = Retry(connect=3, backoff_factor=0.5) adapter = HTTPAdapter(max_retries=retry) session.mount("http://", adapter) session.mount("https://", adapter) response = session.get("https://api.example.com")

获取响应内容

获取响应状态码和内容

python
print(response.status_code) # 获取状态码 print(response.text) # 获取文本内容 print(response.content) # 获取二进制内容 print(response.json()) # 解析 JSON 响应

获取响应头

python
print(response.headers) # 所有响应头 print(response.headers["Content-Type"]) # 特定响应头

代理设置

python
proxies = { "http": "http://proxyserver:port", "https": "https://proxyserver:port", } response = requests.get("https://api.example.com", proxies=proxies)

python
# 设置请求中的 Cookie cookies = {"session_id": "123456"} response = requests.get("https://api.example.com", cookies=cookies) # 获取响应中的 Cookie print(response.cookies)

下载文件

python
url = "https://example.com/file.zip" response = requests.get(url, stream=True) with open("file.zip", "wb") as file: for chunk in response.iter_content(chunk_size=1024): file.write(chunk)

SSL 证书验证

禁用 SSL 证书验证(不推荐)

python
response = requests.get("https://example.com", verify=False)

自定义证书路径

python
response = requests.get("https://example.com", verify="/path/to/cert.pem")

本文作者:皓月归尘

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!