Requests库简介
Requests是Python中处理HTTP请求的简单而强大的库。它为REST API操作、网页数据抓取、文件上传和身份验证提供了便捷的接口。凭借简洁的语法和丰富的功能,Requests已成为Python HTTP客户端的行业标准。
Requests库由Kenneth Reitz于2011年创建,旨在让Python中的HTTP请求变得尽可能简单易用。它基于urllib3构建,为HTTP协议提供了高级API。
Requests vs urllib:优势对比
- 更清晰的语法 — 直观的方法和参数设计
- 自动处理Cookie和重定向 — 无需额外配置
- 便捷的JSON、Headers、表单处理 — 内置主流格式支持
- 支持Session、代理、认证 — 完整的Web服务工具集
- 支持所有HTTP方法 — GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS
- 自动内容解码 — 智能编码处理
- 内置SSL支持 — 默认安全连接
安装与导入
使用pip安装:
pip install requests
升级到最新版本:
pip install --upgrade requests
导入库:
import requests
HTTP请求核心方法
发送GET请求
GET请求用于从服务器获取数据:
response = requests.get('https://api.example.com/data')
print(response.status_code) # 状态码
print(response.text) # 响应文本
获取JSON数据:
response = requests.get('https://api.example.com/users')
data = response.json() # 自动转换为Python字典
print(data)
发送POST请求
POST请求用于向服务器发送数据:
payload = {'username': 'admin', 'password': '123'}
response = requests.post('https://api.example.com/login', data=payload)
发送JSON数据:
user_data = {'name': 'John', 'email': 'john@example.com'}
response = requests.post('https://api.example.com/users', json=user_data)
使用PUT、PATCH和DELETE
# PUT - 完整更新资源
requests.put('https://api.example.com/user/1', json={'name': 'New Name', 'email': 'new@example.com'})
# PATCH - 部分更新资源
requests.patch('https://api.example.com/user/1', json={'active': True})
# DELETE - 删除资源
requests.delete('https://api.example.com/user/1')
# HEAD - 仅获取响应头
response = requests.head('https://api.example.com/user/1')
print(response.headers)
请求参数处理
URL参数可通过字典传递:
params = {'search': 'python', 'limit': 10, 'page': 1}
response = requests.get('https://api.example.com/search', params=params)
print(response.url) # 显示带参数的完整URL
也可以使用元组列表传递参数:
params = [('tag', 'python'), ('tag', 'web'), ('limit', 20)]
response = requests.get('https://api.example.com/posts', params=params)