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 等请求,你可以通过 data
或 json
参数传递请求体:
- 使用
data
参数发送表单数据或原始字节数据:
response = requests.post('https://api.example.com/login', data={'username': 'user', 'password': 'pass'})
- 使用
json
参数发送 JSON 数据(内部会自动将 Python 字典转换为 JSON 字符串,并设置Content-Type
为application/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面试真题,复习时非常方便
完整安装、学习资料
扫下方二维码免费领取源码还有案例↓ ↓ ↓