编辑
2025-08-15
测试
00
请注意,本文编写于 113 天前,最后修改于 112 天前,其中某些信息可能已经过时。

目录

requests库的使用方法:
一、高层便捷API:快速上手的首选
1. 核心方法及作用
2. 关键参数解析
3. 实战示例
(1)GET请求:获取资源(带查询参数)
(2)POST 请求:提交数据(表单或 JSON)
二、通用基础 API:灵活控制请求的底层方法
1. 语法及参数
2. 示例:用request()实现各类请求
三、会话级请求:维持状态的高级用法
1. 基本用法
2. 会话对象的优势
四、核心参数详解:控制请求的每一个细节
1. params:URL 查询参数
2. data:表单数据
3. json:JSON 数据
4. headers:请求头信息
5. cookies:维持会话状态
五、JSON 数据格式:API 交互的通用语言
1. 核心规则
2. 示例
六、总结:选择合适的方法,高效处理请求

requests库的使用方法:

在Python的网络请求领域,requests库以其简洁的API、强大的功能和人性化的设计,成为了开发者处理HTTP请求的首选工具。无论是简单的接口调用、复杂的会话维持,还是数据格式处理,requests都能轻松应对。本文将系统梳理requests库的核心用法,从高层便捷API到会话级请求,帮你快速掌握网络请求的精髓。

一、高层便捷API:快速上手的首选

requests库最常用的功能是封装了各类HTTP方法的高层API,这些方法无需手动指定请求类型,底层均通过requests.request()实现,适合快速完成简单请求。

1. 核心方法及作用

方法作用核心参数
requests.get()发送GET请求(用于获取资源)params(URL查询参数)、**kwargs(其他配置)
requests.post()发送POST请求(用于提交数据)data(表单数据)、json(JSON数据)、** kwargs
requests.put()发送PUT请求(用于更新资源)data(更新数据)、**kwargs
requests.delete()发送DELETE请求(用于删除资源)** kwargs
requests.head()发送HEAD请求(仅获取响应头)**kwargs
requests.options()发送OPTIONS请求(获取服务器支持的方法)** kwargs

2. 关键参数解析

  • **kwargs:灵活接收任意关键字参数(如headerscookiestimeout等),是requests灵活性的核心。
    例如:requests.get(url, headers={"User-Agent": "Chrome"}, timeout=10)

3. 实战示例

(1)GET请求:获取资源(带查询参数)

python
import requests url = "https://api.example.com/users" # 查询参数:page=1,size=10(会自动拼接到URL:?page=1&size=10) params = {"page": 1, "size": 10} # 发送GET请求 response = requests.get(url, params=params) # 打印响应内容 print(response.json()) # 解析JSON响应

(2)POST 请求:提交数据(表单或 JSON)

python
# 提交表单数据(默认Content-Type: application/x-www-form-urlencoded) data = {"username": "test", "password": "123456"} response = requests.post("https://api.example.com/login", data=data) # 提交JSON数据(自动设置Content-Type: application/json) json_data = {"name": "Alice", "age": 25} response = requests.post("https://api.example.com/register", json=json_data)

二、通用基础 API:灵活控制请求的底层方法

requests.request()是所有高层方法的底层实现,支持通过method参数指定任意 HTTP 方法(如GET、POST、PUT等),适合需要动态控制请求类型的场景。

1. 语法及参数

python
requests.request(method, url, **kwargs)

method:字符串类型,指定 HTTP 方法(如"GET"、"POST"); url:请求的 URL; ** kwargs:与高层 API 一致的扩展参数(params、data、headers等)。

2. 示例:用request()实现各类请求

python
# 等价于requests.get() requests.request("GET", "https://api.example.com", params={"id": 1}) # 等价于requests.post() requests.request("POST", "https://api.example.com/submit", data={"key": "value"})

三、会话级请求:维持状态的高级用法

当需要多次请求同一服务且保持上下文(如登录状态、Cookie)时,requests.Session()是最佳选择。 会话对象会自动保留 Cookie,共享连接池,提升效率。

1. 基本用法

python
# 创建会话对象 s = requests.Session() # 会话内的第一次请求(如登录) login_data = {"username": "admin", "password": "admin123"} s.post("https://api.example.com/login", data=login_data) # 登录后Cookie被保留 # 会话内的后续请求(自动携带登录Cookie) response = s.get("https://api.example.com/user/profile") # 无需重复传Cookie print(response.text) # 可获取登录后的用户信息

2. 会话对象的优势

自动维持 Cookie,无需手动传递;
复用 TCP 连接,减少握手开销;
支持批量设置请求头(对所有会话内请求生效):

python
s = requests.Session() s.headers.update({"User-Agent": "Mozilla/5.0", "Accept": "application/json"}) # 后续请求会自动携带上述headers

四、核心参数详解:控制请求的每一个细节

无论是高层 API 还是会话对象,核心参数的作用一致,掌握这些参数能让你灵活应对各类场景。

1. params:URL 查询参数

作用:定义 URL 末尾的查询参数,格式为字典,会自动拼接为?key1=value1&key2=value2; 示例:

python
params = {"name": "inception", "year": 2010} requests.get("https://api.example.com/movies", params=params) # 实际URL:https://api.example.com/movies?name=inception&year=2010

2. data:表单数据

作用:提交表单格式数据(如application/x-www-form-urlencoded),适用于表单提交场景;
格式:字典或字符串(字典会自动编码为key=value&key2=value2);
示例:

python
data = {"username": "test", "email": "test@example.com"} requests.post("https://api.example.com/signup", data=data)

3. json:JSON 数据

作用:提交 JSON 格式数据(自动设置Content-Type: application/json),适用于现代 API 交互;
格式:符合 JSON 规范的字典、列表等(requests会自动序列化);
示例:

python
json_data = { "name": "Bob", "age": 30, "hobbies": ["football", "music"] } requests.post("https://api.example.com/user", json=json_data)

4. headers:请求头信息

作用:传递请求的元数据(如浏览器标识、认证信息、数据格式声明等); 示例

python
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", # 模拟浏览器 "Authorization": "Bearer abc123456" # 携带认证令牌 } requests.get("https://api.example.com/protected", headers=headers)

5. cookies:维持会话状态

作用:手动指定 Cookie 数据(通常用于模拟登录状态); 格式:字典(键为 Cookie 名,值为 Cookie 值); 示例:

python
cookies = {"session_id": "xyz789", "user_id": "123"} requests.get("https://api.example.com/user", cookies=cookies)

五、JSON 数据格式:API 交互的通用语言

在requests中,json参数依赖 JSON 格式规范,掌握其规则能避免数据提交错误。

1. 核心规则

整体用{}包裹(表示对象);
数据以键值对"key": value形式存在(键必须用双引号);
键值对之间用,分隔(最后一个键值对后无逗号);

值的类型:
字符串(双引号包裹,如"name": "Alice");
数字(整数 / 浮点数,如"age": 25);
布尔值(true/false,小写);
数组([]包裹,如"hobbies": ["reading", "coding"]);
嵌套对象(如"address": {"city": "Beijing"});
null(表示空值,如"avatar": null)。

2. 示例

json { "name": "Bob", "age": 30, "is_student": false, "hobbies": ["football", "music"], "contact": { "email": "bob@example.com", "phone": "123456789" }, "address": null }

六、总结:选择合适的方法,高效处理请求

简单场景:优先使用高层 API(get()、post()等),快速实现功能;
动态请求类型:用request()方法,通过method参数灵活切换;
多请求维持状态:用Session()对象,自动保留上下文,提升效率;
参数使用:根据数据类型选择params(URL 参数)、data(表单)、json(JSON),配合headers和cookies控制请求细节。

本文作者:haotian

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!