Requests 库的详细使用指南,覆盖安装、常用方法、高级功能及示例代码:
1. 安装
bash
pip install requests2. 基础用法
GET 请求
python
import requests
response = requests.get("https://api.example.com/data")
print(response.status_code) # 200
print(response.text) # 响应文本
print(response.json()) # 解析为 JSON(自动处理)POST 请求
python
payload = {"key1": "value1", "key2": "value2"}
response = requests.post("https://httpbin.org/post", data=payload)
print(response.json())3. 请求参数
查询参数(URL 参数)
python
params = {"q": "python", "page": 2}
response = requests.get("https://httpbin.org/get", params=params)
print(response.url) # https://httpbin.org/get?q=python&page=2请求头
python
headers = {"User-Agent": "Mozilla/5.0", "Authorization": "Bearer YOUR_TOKEN"}
response = requests.get("https://api.example.com", headers=headers)4. 响应处理
检查状态码
python
if response.status_code == 200:
print("成功!")
else:
print(f"失败: {response.status_code}")处理二进制内容(如图片)
python
image_url = "https://example.com/image.jpg"
response = requests.get(image_url)
with open("image.jpg", "wb") as f:
f.write(response.content)5. 高级功能
会话保持(Session)
python
with requests.Session() as session:
session.headers.update({"User-Agent": "Custom-Agent"})
# 登录(保持 Cookies)
session.post("https://example.com/login", data={"user": "admin", "pass": "123"})
# 后续请求自动携带 Cookies
response = session.get("https://example.com/dashboard")超时设置
python
try:
response = requests.get("https://example.com", timeout=5) # 5秒超时
except requests.exceptions.Timeout:
print("请求超时")重试机制
python
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retries = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
session.mount("https://", HTTPAdapter(max_retries=retries))
response = session.get("https://example.com")6. 处理认证
Basic Auth
python
from requests.auth import HTTPBasicAuth
response = requests.get(
"https://api.example.com",
auth=HTTPBasicAuth("user", "pass")
)Token 认证
python
headers = {"Authorization": "Token YOUR_API_TOKEN"}
response = requests.get("https://api.example.com", headers=headers)7. 代理配置
python
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
response = requests.get("https://example.com", proxies=proxies)8. 文件上传
python
files = {"file": open("data.txt", "rb")}
response = requests.post("https://httpbin.org/post", files=files)9. 错误处理
python
try:
response = requests.get("https://example.com")
response.raise_for_status() # 自动抛出 4xx/5xx 错误
except requests.exceptions.HTTPError as err:
print(f"HTTP 错误: {err}")
except requests.exceptions.RequestException as err:
print(f"请求异常: {err}")10. 常见场景
调用 REST API
python
response = requests.get("https://api.github.com/users/octocat")
data = response.json()
print(data["name"], data["bio"])爬取动态内容(需结合其他工具)
python
# 若页面内容由 JavaScript 渲染,需改用 Selenium/Playwright
response = requests.get("https://example.com/dynamic-page")
# 解析静态 HTML(结合 BeautifulSoup)
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
title = soup.find("h1").text注意事项
- 遵守 Robots 协议:检查目标网站的
robots.txt。 - 速率限制:避免高频请求导致 IP 被封。
- SSL 验证:若遇到证书错误,可关闭验证(不推荐):python
requests.get("https://example.com", verify=False)
通过 Requests,可以快速完成 HTTP 请求交互,适用于 API 调用、简单爬虫、数据采集等场景。对于高并发需求,建议使用异步库(如 aiohttp)。