Requests:Python 发 HTTP 请求的标准答案
Requests:Python 发 HTTP 请求的标准答案
54K Star,每周下载量 3 亿次,被 400 万个仓库依赖。这不是什么新兴网红库,而是 Python 生态里做 HTTP 请求的事实标准。只要你的代码需要跟网络打交道,大概率绕不开它。

它解决什么问题
Python 标准库自带 urllib,但用过的人都知道,那套 API 写起来很啰嗦。手动拼 query string、手动编码 POST 数据、手动处理重定向和 Cookie,写个简单的请求都要几十行代码。
Requests 把这些全封装了。几行代码就能发一个完整的 HTTP 请求:
import requests
r = requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))
r.status_code
# 200
r.json()
# {'authenticated': True, ...}
不用手动拼 URL 参数,不用操心 PUT 和 POST 的数据编码,JSON 响应直接 .json() 拿字典。这些今天看起来理所当然的便利,都是 Requests 在 2011 年定义出来的交互范式。
功能覆盖
别看 API 简洁,它覆盖的场景相当全:
- Keep-Alive 和连接池:复用 TCP 连接,不用每次都握手
- Session 和 Cookie 持久化:跨请求保持登录状态
- TLS/SSL 验证:默认开启,行为跟浏览器一致
- 认证方式:Basic、Digest 都支持
- 文件上传:multipart encoding 直接搞定
- 流式下载:大文件不用一次性加载到内存
- SOCKS 代理:内网环境也能用
- 超时控制:连接超时、读取超时分别设置
.netrc支持:自动读取本地凭据文件
安装和使用
pip install requests
目前官方支持 Python 3.10 以上版本。安装完直接 import 就能用,没有额外配置。
GET、POST、PUT、DELETE 这些 HTTP 方法都有对应的函数,参数命名统一,看一眼文档就能上手。如果你在做 API 对接、爬虫、自动化脚本、或者任何需要发网络请求的事情,它是第一个该加到 requirements.txt 里的库。

为什么还在用它
Python 3.11 之后标准库加了 httpx 的部分能力,aiohttp 提供了异步方案,httpx 本身也支持同步和异步两种模式。Requests 在异步场景下确实没有原生支持。
但对于绝大多数同步 HTTP 请求的场景,Requests 的 API 设计仍然是最省心的选择。社区成熟、文档齐全、几乎所有 Python 教程和示例都用它。遇到问题搜一下,基本都有人踩过坑。
一个库能活 15 年、每周还有 3 亿次下载,靠的不是功能多,而是在它做的事情上足够可靠。
本都有人踩过坑。
一个库能活 15 年、每周还有 3 亿次下载,靠的不是功能多,而是在它做的事情上足够可靠。
更多推荐
所有评论(0)