requests 库和 session
掌握 requests 库的核心方法
能发送 GET、POST 请求并处理响应
掌握 Session 会话保持的原理与使用
核心讲解
requests 是 Python 最主流的 HTTP 客户端库,语法简洁,功能强大,是接口自动化的基础工具。
(1)核心请求方法requests.get():发送 GET 请求requests.post():发送 POST 请求requests.put()、requests.delete()等
params:GET 请求的 URL 参数,字典格式data:表单格式请求体json:JSON 格式请求体,自动设置 Content-Typeheaders:请求头,字典格式cookies:请求携带的 Cookietimeout:超时时间,防止卡死
.status_code:状态码.text:字符串格式响应体.json():解析 JSON 响应体,返回字典.headers:响应头.cookies:响应 Cookie.url:最终请求的 URL
自动保持和管理 Cookie,模拟浏览器的会话,适合需要登录的场景,不用每次手动传 Cookie。
创建:
s = requests.Session()使用:和 requests 用法一样,
s.get()、s.post()特点:自动保存响应的 Cookie,后续请求自动带上
代码示例
import requests
# ===== 1. GET请求 =====
url = "https://api.example.com/weather"
params = {
"city": "成都",
"type": "now"
}
resp = requests.get(url, params=params, timeout=10)
print("状态码:", resp.status_code)
print("响应JSON:", resp.json())
# ===== 2. POST请求(JSON格式) =====
login_url = "https://api.example.com/login"
login_data = {
"username": "admin",
"password": "123456"
}
resp = requests.post(login_url, json=login_data)
result = resp.json()
print("登录结果:", result)
token = result.get("data", {}).get("token")
# ===== 3. 带请求头 =====
info_url = "https://api.example.com/user/info"
headers = {
"Authorization": f"Bearer {token}",
"User-Agent": "Python Test"
}
resp = requests.get(info_url, headers=headers)
print("用户信息:", resp.json())
# ===== 4. Session会话 =====
s = requests.Session()
# 登录,session自动存cookie
s.post("https://demo.com/login", data={"user": "admin", "pwd": "123456"})
# 后续请求自动带登录状态
resp = s.get("https://demo.com/user/info")
print("登录后访问:", resp.json())
# 退出
s.close()
常见误区
params 和 data 搞混:GET 参数用 params,POST 表单用 data,JSON 用 json
json 参数和 data=json.dumps () 等效:requests 的 json 参数会自动序列化,不用自己转
响应 json () 报错:返回不是 JSON 格式时调用会报错,先看 text 内容
Session 跨域名失效:Session 是按域名存 Cookie,不同域名不共享
不设置超时:网络异常时会一直卡住,一定要加 timeout
课后练习
调用公开的天气接口,传入城市参数,解析并输出温度、天气
实现登录接口调用,获取 token 后携带 token 调用用户信息接口
用 Session 实现:登录后访问需要登录的页面,验证状态保持

