Python requests
requests
是 Python 中最流行的 HTTP 请求库,它使得发送 HTTP/1.1 请求变得非常简单。本文将介绍 requests 库的基本用法和常见操作。
1. 安装 Requests
使用 pip 安装 requests:
pip install requests
2. 基本请求方法
Requests 提供了所有 HTTP 动词对应的方法:
import requests
# GET 请求
response = requests.get('https://api.example.com/items')
# POST 请求
response = requests.post('https://api.example.com/items', data={'key': 'value'})
# PUT 请求
response = requests.put('https://api.example.com/items/1', data={'key': 'value'})
# DELETE 请求
response = requests.delete('https://api.example.com/items/1')
3. 请求参数
3.1 URL 参数(Query String)
# 添加 URL 参数
params = {
'page': 1,
'size': 10
}
response = requests.get('https://api.example.com/items', params=params)
3.2 请求头(Headers)
headers = {
'User-Agent': 'Mozilla/5.0',
'Authorization': 'Bearer token123'
}
response = requests.get('https://api.example.com/items', headers=headers)
3.3 发送数据
# 发送表单数据
data = {
'username': 'user1',
'password': '123456'
}
response = requests.post('https://api.example.com/login', data=data)
# 发送 JSON 数据
json_data = {
'name': 'John',
'age': 30
}
response = requests.post('https://api.example.com/users', json=json_data)
4. 响应处理
response = requests.get('https://api.example.com/items')
# 状态码
print(response.status_code) # 200, 404, 500 等
# 响应内容
print(response.text) # 文本内容
print(response.json()) # JSON 内容
print(response.content) # 二进制内容
# 响应头
print(response.headers)
5. 高级特性
5.1 会话(Session)
# 创建会话
session = requests.Session()
session.headers.update({'Authorization': 'Bearer token123'})
# 使用会话发送请求
response = session.get('https://api.example.com/items')
5.2 超时设置
# 设置超时(单位:秒)
response = requests.get('https://api.example.com/items', timeout=5)
5.3 错误处理
try:
response = requests.get('https://api.example.com/items')
response.raise_for_status() # 如果状态码不是 200,抛出异常
except requests.exceptions.RequestException as e:
print(f"发生错误: {e}")
6. 最佳实践
- 始终设置超时
- 使用异常处理
- 正确关闭会话
- 验证 SSL 证书
- 使用适当的 Content-Type
# 完整示例
import requests
from requests.exceptions import RequestException
try:
with requests.Session() as session:
session.headers.update({
'User-Agent': 'Mozilla/5.0',
'Content-Type': 'application/json'
})
response = session.get(
'https://api.example.com/items',
params={'page': 1},
timeout=5,
verify=True # SSL 验证
)
response.raise_for_status()
data = response.json()
print(data)
except RequestException as e:
print(f"请求失败: {e}")
7. 常见问题解决
- SSL 证书验证失败:使用
verify=False
(不推荐在生产环境中使用) - 代理设置:使用
proxies
参数 - 重定向处理:使用
allow_redirects
参数
总结
Requests 库是 Python 中进行 HTTP 请求的最佳选择,它提供了简单易用的 API,支持多种请求方法和数据格式,并且有完善的错误处理机制。掌握这些基础知识将帮助你更好地进行网络请求开发。