Python HTTP 请求:requests / httpx / aiohttp 完整对比
requests是最经典的Python HTTP库,httpx支持HTTP/2和异步,aiohttp适合高并发爬虫。
requests:同步请求
requests.get()发送GET请求,r.json()自动解析JSON。带参数用params,POST用json参数。timeout控制超时,proxies设置代理。HTTPBasicAuth或Bearer Token处理认证。
httpx:同步+异步
httpx.Client()同步用法与requests几乎相同。httpx.AsyncClient()异步用法需要asyncio配合,适合需要HTTP/2或流式响应的场景。
aiohttp:纯异步
aiohttp.ClientSession()创建会话,asyncio.gather()并发执行多个请求。适合大量并发请求的高并发爬虫或API聚合服务。
运行效果
requests同步:顺序执行,总耗时是各请求之和。httpx/aiohttp异步:并发执行,总耗时接近最慢的单个请求。
常见问题
Q1: 三者怎么选?简单脚本用requests,需要HTTP/2或异步用httpx,高并发爬虫用aiohttp。
Q2: SSL证书错误怎么办?verify=False仅测试用,生产环境要配置正确的证书。
延伸阅读
- Python API设计
- Python异步编程
- Python爬虫入门
---
作者:小马 | 绍大技术网 shaoda.net