requests模块的全面解析与应用
requests
模块是Python中一个用于发送HTTP请求的第三方库,它让HTTP请求变得非常简单且人性化。以下是对requests
模块的全面解析与应用。
安装
首先,需要安装requests
模块,可以使用以下命令进行安装:
pip install requests
主要功能
requests
模块涵盖了各种HTTP请求类型,包括GET、POST、PUT、DELETE等。下面将逐一介绍这些功能。
1. 发送GET请求
GET请求用于从服务器获取数据。使用requests.get()
方法可以发送GET请求。
import requests
response = requests.get("https://api.example.com/data")
print(response.status_code) # 状态码
print(response.text) # 响应内容
可以通过参数传递请求参数:
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get("https://api.example.com/data", params=params)
2. 发送POST请求
POST请求用于向服务器提交数据。使用requests.post()
方法发送POST请求。
data = {'username': 'user', 'password': 'pass'}
response = requests.post("https://api.example.com/login", data=data)
可以通过json
参数直接提交JSON数据:
json_data = {'key1': 'value1'}
response = requests.post("https://api.example.com/json", json=json_data)
3. 其他请求类型
PUT请求:用于更新服务器上的资源。
response = requests.put("https://api.example.com/update/1", data={'key': 'value'})
DELETE请求:用于删除服务器上的资源。
response = requests.delete("https://api.example.com/delete/1")
4. 设置请求头
有时候需要自定义请求头,可以通过headers
参数来实现:
headers = {'Authorization': 'Bearer your_token'}
response = requests.get("https://api.example.com/protected", headers=headers)
5. 处理响应
可以通过response
对象获取丰富的信息:
response.status_code
:HTTP状态码response.text
:返回的内容,字符串形式response.json()
:将返回内容解析为JSONresponse.headers
:响应头
6. 处理文件上传/下载
文件上传:
files = {'file': open('report.xls', 'rb')}
response = requests.post("https://api.example.com/upload", files=files)
文件下载:
response = requests.get("https://api.example.com/large-file", stream=True)
with open('large-file.zip', 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
7. 超时与重试
设置请求超时可以防止请求挂起:
response = requests.get("https://api.example.com", timeout=5)
需要实现重试逻辑时可以使用requests
的Session对象:
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get("https://api.example.com")
总结
requests
模块提供了一套简洁且强大的HTTP请求方法,适合用于Python项目中各类HTTP客户端需求。通过正确使用requests
,可以大大简化日常HTTP操作的工作量。如果需要高级功能,可以进一步学习Session对象来保持会话、管理cookie及提高请求性能。