Python Requests读取服务器响应教程 - 详细步骤与代码示例
- Python
- 2025-08-16
- 1629
Python Requests库读取服务器响应教程
Requests是Python中最受欢迎的HTTP库之一,它简化了发送HTTP请求和处理响应的过程。本教程将详细介绍如何使用requests库发送HTTP请求并读取服务器返回的各种类型响应。
1. 安装requests库
在开始之前,需要先安装requests库。可以使用pip进行安装:
pip install requests
安装完成后,可以在Python脚本中导入requests库:
import requests
2. 发送GET请求
使用requests发送GET请求非常简单:
response = requests.get('https://api.example.com/data')
这个请求会返回一个Response对象,包含服务器返回的所有信息。
3. 读取响应内容
获取响应内容的最简单方法是使用.text属性:
print(response.text)
Requests会自动解码来自服务器的内容,可以使用response.encoding查看当前编码:
print(response.encoding) # 查看当前编码 response.encoding = 'utf-8' # 设置编码
4. 处理响应状态码
检查HTTP响应状态码:
print(response.status_code) # 输出状态码,例如200
# 状态码检查的简便方法
if response.status_code == 200:
print("请求成功!")
elif response.status_code == 404:
print("页面未找到!")
requests库还提供了更简洁的状态码检查方法:
if response.ok: # 检查状态码是否在200-400之间
print("请求成功!")
5. 读取响应头信息
服务器响应头包含重要的元数据:
# 获取所有响应头信息
print(response.headers)
# 获取特定响应头
print(response.headers['Content-Type'])
print(response.headers.get('Content-Type')) # 更安全的方式,避免KeyError
6. 处理JSON响应
对于JSON格式的响应,可以使用.json()方法解析:
data = response.json() print(data['key']) # 访问JSON数据
完整的JSON请求处理示例:
import requests
url = "https://api.github.com/users/octocat"
response = requests.get(url)
if response.status_code == 200:
user_data = response.json()
print(f"用户名: {user_data['login']}")
print(f"姓名: {user_data['name']}")
print(f"关注者: {user_data['followers']}")
else:
print(f"请求失败,状态码: {response.status_code}")
7. 处理二进制响应
对于非文本内容(如图片、文件),使用.content属性:
# 下载图片示例
response = requests.get('https://example.com/image.jpg')
if response.status_code == 200:
with open('image.jpg', 'wb') as f:
f.write(response.content)
print("图片下载成功")
else:
print(f"下载失败,状态码: {response.status_code}")
8. 错误处理
使用try-except块处理请求过程中可能发生的异常:
try:
response = requests.get('https://api.example.com/data', timeout=5)
response.raise_for_status() # 如果状态码不是200,抛出HTTPError异常
# 处理响应数据
except requests.exceptions.HTTPError as errh:
print(f"HTTP错误: {errh}")
except requests.exceptions.ConnectionError as errc:
print(f"连接错误: {errc}")
except requests.exceptions.Timeout as errt:
print(f"请求超时: {errt}")
except requests.exceptions.RequestException as err:
print(f"请求异常: {err}")
9. 处理重定向
Requests默认会跟随重定向,可以通过allow_redirects参数控制:
# 禁止重定向
response = requests.get('http://github.com', allow_redirects=False)
print(response.status_code) # 301
# 查看重定向历史
response = requests.get('http://github.com')
print(response.history) # 显示重定向链
print(response.url) # 最终URL
10. 总结
Python的requests库提供了简洁而强大的API来处理HTTP请求和响应。本教程涵盖了:
- 安装requests库
- 发送GET请求
- 读取文本、JSON和二进制响应
- 处理状态码和响应头
- 错误处理
- 重定向处理
使用requests库,你可以轻松地与各种Web服务和API进行交互,获取和处理服务器响应数据。
最佳实践提示: 始终包含错误处理代码;对于长时间运行的请求设置超时;检查响应状态码;处理可能的重定向;当处理用户数据时考虑隐私和安全。
完整示例:API请求与处理
import requests
def fetch_user_data(username):
url = f"https://api.github.com/users/{username}"
try:
response = requests.get(url, timeout=10)
response.raise_for_status() # 检查HTTP错误
user_data = response.json()
return {
'username': user_data['login'],
'name': user_data.get('name', '未提供'),
'bio': user_data.get('bio', '无简介'),
'public_repos': user_data['public_repos'],
'followers': user_data['followers']
}
except requests.exceptions.HTTPError as err:
print(f"HTTP错误: {err}")
except requests.exceptions.RequestException as err:
print(f"请求错误: {err}")
return None
# 使用示例
user_info = fetch_user_data("octocat")
if user_info:
print(f"用户信息: {user_info}")
进一步学习资源
- 官方requests文档: https://docs.python-requests.org
- HTTP状态码参考: MDN HTTP状态码文档
- JSON数据处理: Python json模块文档
本文由YangKunFei于2025-08-16发表在吾爱品聚,如有疑问,请联系我们。
本文链接:http://521pj.cn/20258255.html
发表评论