Python requests
Python3 学习笔记 · 整理自菜鸟教程
一句话
requests 是最流行的第三方 HTTP 库,用几行代码完成 GET/POST、传参、传 JSON、带请求头、处理响应。
要点
- 先装:
pip install requests。 requests.get(url, params=...)发 GET,requests.post(url, data=/json=...)发 POST。params走查询字符串(URL 上),data走表单,json走 JSON 请求体。- 响应对象常用属性:
status_code、text、json()、content、headers。 text是解码后的字符串,content是原始 bytes(下载图片用)。- 用
headers传请求头,用cookies/Session维持登录态。 timeout必设,避免请求卡死。
语法 / 常用方法
| 方法 / 参数 | 说明 | 示例 |
|---|---|---|
requests.get(url) |
GET 请求 | get("https://a.com") |
requests.post(url, data=) |
POST 表单 | post(url, data={"a": 1}) |
requests.post(url, json=) |
POST JSON | post(url, json={"a": 1}) |
params={...} |
URL 查询参数 | get(url, params={"q": "中文"}) |
headers={...} |
自定义请求头 | {"User-Agent": "..."} |
data={...} / data="..." |
表单数据 | 自动编码 |
json= |
JSON 请求体 | 自动序列化并设 Content-Type |
timeout=5 |
超时秒数 | 防卡死 |
r.status_code |
状态码 | 200 |
r.text |
解码后的文本 | 网页源码 |
r.content |
原始字节 | 图片/文件 |
r.json() |
解析 JSON | 返回 dict/list |
r.headers |
响应头 | dict |
r.raise_for_status() |
非 2xx 抛异常 | 统一错误处理 |
requests.Session() |
会话对象 | 保持 cookie、复用连接 |
代码示例
1 | |
易错点
- 忘记
.json()的括号,r.json是方法不是属性。 - 服务端要 JSON 时别用
data=json.dumps(...),直接json=...会同时设好 Content-Type。 - 不设
timeout默认无限等待,程序可能永久卡住。 - 下载图片/二进制必须用
r.content并以"wb"写文件,用r.text会损坏。 - 4xx/5xx 不会自动抛异常,需要
raise_for_status()或自己判断status_code。 - 编码乱码时用
r.encoding = r.apparent_encoding让 requests 猜对编码。