欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Python—requests模块详解

Python—requests模块详解

2024/10/23 21:30:40 来源:https://blog.csdn.net/2301_78096295/article/details/143080638  浏览:    关键词:Python—requests模块详解

requests 模块是 Python 中一个非常流行的用于发送 HTTP 请求的第三方库。它提供了简洁易用的 API,使得发送 HTTP 请求和处理响应变得非常简单。以下是对 requests 模块的详细解析。

安装 requests 模块

在使用 requests 模块之前,你需要确保它已经被安装在你的 Python 环境中。你可以使用 pip 来安装它:

pip install requests

基本用法

发送 GET 请求

GET 请求是最常见的 HTTP 请求类型之一,用于从服务器获取数据。以下是一个发送 GET 请求的示例:

import requests# 发送 GET 请求
response = requests.get('https://api.example.com/data')# 检查请求是否成功
if response.status_code == 200:# 获取响应内容data = response.json()  # 假设服务器返回的是 JSON 格式的数据print(data)
else:print(f"请求失败,状态码:{response.status_code}")
发送 POST 请求

POST 请求通常用于向服务器提交数据。以下是一个发送 POST 请求的示例:

import requests
import json# 要提交的数据
payload = {'key1': 'value1','key2': 'value2'
}# 发送 POST 请求,并设置请求头以指明我们发送的是 JSON 数据
headers = {'Content-Type': 'application/json'
}
response = requests.post('https://api.example.com/submit', data=json.dumps(payload), headers=headers)# 检查请求是否成功
if response.status_code == 200:print("提交成功")
else:print(f"提交失败,状态码:{response.status_code}")

请求参数

URL 参数

对于 GET 请求,你可以通过 params 参数传递 URL 查询参数:

response = requests.get('https://api.example.com/search', params={'q': 'python requests'})
请求头

你可以通过 headers 参数设置自定义的请求头:

headers = {'User-Agent': 'my-app/0.0.1','Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
response = requests.get('https://api.example.com/protected', headers=headers)
请求体

对于 POST、PUT 等请求,你可以通过 datajson 参数传递请求体:

  • 使用 data 参数发送表单数据或原始字节数据:
response = requests.post('https://api.example.com/login', data={'username': 'user', 'password': 'pass'})
  • 使用 json 参数发送 JSON 数据(内部会自动将 Python 字典转换为 JSON 字符串,并设置 Content-Typeapplication/json):
response = requests.post('https://api.example.com/submit', json={'key': 'value'})

响应处理

获取响应内容
  • .text:获取响应的文本内容(字符串形式)。
  • .content:获取响应的原始字节内容。
  • .json():将响应内容解析为 Python 字典(假设响应是 JSON 格式)。
# 示例
print(response.text)       # 字符串形式的响应内容
print(response.content)    # 字节形式的响应内容
print(response.json())     # 解析为 Python 字典的响应内容(如果可能)
检查响应状态码

你可以通过 status_code 属性检查响应的状态码:

if response.status_code == 200:print("请求成功")
else:print(f"请求失败,状态码:{response.status_code}")
处理异常

requests 模块会自动处理一些常见的 HTTP 错误,并抛出 requests.exceptions.RequestException 异常或其子类。你可以使用 try-except 块来捕获这些异常:

try:response = requests.get('https://api.example.com/nonexistent')response.raise_for_status()  # 如果状态码不是 2xx,则抛出 HTTPError 异常
except requests.exceptions.RequestException as e:print(f"请求出错:{e}")

高级用法

会话对象

使用 requests.Session 对象可以跨请求保持某些参数,如 cookies 和 headers。这对于需要登录或保持会话状态的网站特别有用:

session = requests.Session()# 设置会话级别的 headers
session.headers.update({'User-Agent': 'my-app/0.0.1'})# 发送请求
response = session.get('https://api.example.com/protected')# ... 其他请求
超时和重试

你可以设置请求的超时时间,并在失败时自动重试:

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry# 创建重试策略
retry_strategy = Retry(total=3,  # 总共重试次数status_forcelist=[500, 502, 503, 504],  # 需要重试的状态码method_whitelist=["HEAD", "GET", "OPTIONS"]  # 对哪些方法启用重试
)# 创建适配器并绑定重试策略
adapter = HTTPAdapter(max_retries=retry_strategy)# 创建会话对象并绑定适配器
session = requests.Session()
session.mount("https://", adapter)
session.mount("http://", adapter)# 发送请求
response = session.get('https://api.example.com/data', timeout=5)  # 设置超时时间为 5 秒

以上就是对 requests 模块的详细解析和代码示例。requests 模块功能强大且易于使用,是 Python 中进行 HTTP 请求的首选库之一。

最后这里免费分享给大家[学习资料,包含视频、源码]。书籍,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以加我一起学习交流。

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,学习不再是只会理论

④ 华为出品独家Python漫画教程,手机也能学习

⑤ 历年互联网企业Python面试真题,复习时非常方便
在这里插入图片描述
完整安装、学习资料
扫下方二维码免费领取源码还有案例↓ ↓ ↓

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com