Skip to content

Requests 库的详细使用指南,覆盖安装、常用方法、高级功能及示例代码:


1. 安装

bash
pip install requests

2. 基础用法

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)。

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer