上一篇
Python Requests教程:发送HTTP请求的完整指南 | Python编程
- Python
- 2025-08-04
- 803
Python Requests库教程
掌握HTTP请求发送的完整指南
为什么选择Requests库?
Requests是Python中最受欢迎的HTTP库,具有以下优势:
') no-repeat left center;">简单易用的API设计 ') no-repeat left center;">自动内容解码 ') no-repeat left center;">支持HTTPS和连接池 ') no-repeat left center;">完善的文档和社区支持
安装Requests库
使用pip安装Requests:
pip install requests
发送GET请求
GET请求用于从服务器获取数据:
import requests
# 发送简单的GET请求
response = requests.get('https://api.example.com/data')
# 检查请求是否成功
if response.status_code == 200:
# 解析JSON响应
data = response.json()
print(f"获取到 {len(data)} 条记录")
else:
print(f"请求失败,状态码: {response.status_code}")
带参数的GET请求
使用params参数传递查询参数:
params = {
'page': 1,
'limit': 20,
'sort': 'date_desc'
}
response = requests.get(
'https://api.example.com/items',
params=params
)
print(f"请求URL: {response.url}")
# 输出: https://api.example.com/items?page=1&limit=20&sort=date_desc
发送POST请求
POST请求用于向服务器提交数据:
# 准备要提交的数据
user_data = {
'name': '张三',
'email': 'zhangsan@example.com',
'age': 28
}
# 发送POST请求
response = requests.post(
'https://api.example.com/users',
json=user_data # 自动设置为application/json
)
if response.status_code == 201:
print("用户创建成功!")
new_user = response.json()
print(f"新用户ID: {new_user['id']}")
提交表单数据
使用data参数提交表单数据:
login_data = {
'username': 'myuser',
'password': 'securepassword123'
}
response = requests.post(
'https://api.example.com/login',
data=login_data # 自动设置为application/x-www-form-urlencoded
)
设置请求头
自定义请求头以满足API要求:
headers = {
'User-Agent': 'MyApp/1.0',
'Authorization': 'Bearer my_access_token',
'Accept': 'application/json',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.example.com/protected-data',
headers=headers
)
处理响应
Response对象包含服务器返回的所有信息:
response = requests.get('https://api.example.com/data')
# 状态码
print(f"状态码: {response.status_code}")
# 响应头
print("响应头:")
for key, value in response.headers.items():
print(f" {key}: {value}")
# 响应内容
print(f"文本内容: {response.text[:100]}...") # 前100个字符
# JSON响应 (如果是JSON格式)
if 'application/json' in response.headers.get('Content-Type', ''):
data = response.json()
print(f"JSON数据: {data}")
# 二进制内容 (如图片)
image_data = response.content
with open('image.jpg', 'wb') as f:
f.write(image_data)
错误处理
处理请求过程中可能出现的异常:
try:
response = requests.get('https://api.example.com/data', timeout=5)
response.raise_for_status() # 如果状态码不是200,抛出HTTPError异常
data = response.json()
print(data)
except requests.exceptions.HTTPError as err:
print(f"HTTP错误: {err}")
except requests.exceptions.ConnectionError as err:
print(f"连接错误: {err}")
except requests.exceptions.Timeout as err:
print(f"请求超时: {err}")
except requests.exceptions.RequestException as err:
print(f"请求异常: {err}")
其他HTTP方法
Requests支持所有HTTP方法:
# PUT请求 - 更新资源
response = requests.put(
'https://api.example.com/users/123',
json={'email': 'new_email@example.com'}
)
# DELETE请求 - 删除资源
response = requests.delete('https://api.example.com/users/123')
# PATCH请求 - 部分更新资源
response = requests.patch(
'https://api.example.com/users/123',
json={'age': 31}
)
高级用法
使用会话保持状态
# 创建会话对象
with requests.Session() as session:
# 登录
session.post('https://example.com/login', data={'user': 'name', 'pass': 'word'})
# 使用同一个会话访问需要认证的页面
response = session.get('https://example.com/dashboard')
print(response.text)
设置超时
# 连接超时3秒,读取超时7秒
try:
response = requests.get('https://example.com', timeout=(3, 7))
except requests.exceptions.Timeout:
print("请求超时")
使用代理
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
requests.get('http://example.org', proxies=proxies)
开始使用Requests库吧!
Requests库简化了Python中的HTTP请求处理,无论是与REST API交互、抓取网页内容还是测试Web服务,它都是必备工具。
立即安装并开始构建强大的网络应用!
本文由JingGanQing于2025-08-04发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257253.html
发表评论