Python Requests读取服务器响应教程 - 详细步骤与代码示例
- Python
- 2025-08-16
- 1430
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发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20258255.html
发表评论