上一篇
Python Requests响应状态码检测完全指南 | Python网络请求教程
- Python
- 2025-08-05
- 555
Python Requests响应状态码检测完全指南
学习如何使用Python requests库检测HTTP响应状态码,提升网络请求处理能力
为什么状态码检测很重要?
HTTP状态码是服务器对每个HTTP请求返回的3位数字代码,它们提供了请求处理结果的即时反馈。在Python网络编程中,正确检测和处理状态码对于:
- 判断请求是否成功
- 处理重定向和客户端错误
- 监控网站可用性
- 构建健壮的爬虫和API客户端
Python的requests库提供了简单直观的方式来访问和处理HTTP状态码。
安装Requests库
在开始之前,确保你已经安装了requests库。如果尚未安装,可以使用pip安装:
# 在命令行中运行以下命令
pip install requests
pip install requests
基础状态码检测
使用requests发送请求后,可以通过响应对象的status_code
属性获取状态码:
import requests
# 发送GET请求
response = requests.get('https://api.example.com/data')
# 获取状态码
status = response.status_code
print(f"响应状态码: {status}")
# 简单判断请求是否成功
if status == 200:
print("请求成功!")
else:
print(f"请求失败,状态码: {status}")
# 发送GET请求
response = requests.get('https://api.example.com/data')
# 获取状态码
status = response.status_code
print(f"响应状态码: {status}")
# 简单判断请求是否成功
if status == 200:
print("请求成功!")
else:
print(f"请求失败,状态码: {status}")
HTTP状态码分类
HTTP状态码分为五个类别,每个类别有特定的含义:
1xx - 信息响应
表示请求已被接收,需要继续处理
2xx - 成功
表示请求已成功被服务器接收、理解并接受
3xx - 重定向
表示需要客户端采取进一步的操作才能完成请求
4xx - 客户端错误
表示客户端看起来可能发生了错误,妨碍了服务器的处理
5xx - 服务器错误
表示服务器在处理请求的过程中有错误或异常状态发生
高级状态码处理
Requests库提供了更便捷的方法来处理状态码:
import requests
response = requests.get('https://api.example.com/data')
# 使用内置状态码常量
if response.status_code == requests.codes.ok:
print('200 OK')
# 检查是否为4xx或5xx错误
if response.status_code >= 400:
print(f'错误响应: {response.status_code}')
# 使用raise_for_status()自动抛出异常
try:
response.raise_for_status()
print("请求成功,状态码:", response.status_code)
except requests.exceptions.HTTPError as err:
print(f"HTTP错误发生: {err}")
response = requests.get('https://api.example.com/data')
# 使用内置状态码常量
if response.status_code == requests.codes.ok:
print('200 OK')
# 检查是否为4xx或5xx错误
if response.status_code >= 400:
print(f'错误响应: {response.status_code}')
# 使用raise_for_status()自动抛出异常
try:
response.raise_for_status()
print("请求成功,状态码:", response.status_code)
except requests.exceptions.HTTPError as err:
print(f"HTTP错误发生: {err}")
提示:
raise_for_status()
方法在状态码为4xx或5xx时会抛出HTTPError异常,是处理错误状态的推荐方式。
实际应用示例
网站健康检查
def check_website_health(url):
try:
response = requests.get(url, timeout=5)
response.raise_for_status()
return f"网站正常 (状态码: {response.status_code})"
except requests.exceptions.RequestException as e:
return f"网站不可达: {str(e)}"
# 使用示例
print(check_website_health('https://www.example.com'))
try:
response = requests.get(url, timeout=5)
response.raise_for_status()
return f"网站正常 (状态码: {response.status_code})"
except requests.exceptions.RequestException as e:
return f"网站不可达: {str(e)}"
# 使用示例
print(check_website_health('https://www.example.com'))
API响应处理
def get_user_data(user_id):
url = f"https://api.example.com/users/{user_id}"
response = requests.get(url)
if response.status_code == 200:
return response.json()
elif response.status_code == 404:
print("用户不存在")
return None
else:
response.raise_for_status()
url = f"https://api.example.com/users/{user_id}"
response = requests.get(url)
if response.status_code == 200:
return response.json()
elif response.status_code == 404:
print("用户不存在")
return None
else:
response.raise_for_status()
本文由GengDa于2025-08-05发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257394.html
发表评论