一、Session
在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
会话能让我们在跨请求的时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie信息
session = requests.session() # 创建session对象
# 得到session对象之后,就可以调用该对象中方法来发送请求了。
response1 = session.get(url,params,headers)
response2 = session.post(url,data,json,headers)
import requests
response1 = requests.get(url,params,headers,cookies) # 发送get网络请求
response2 = requests.post(url,data,json,headers,cookies) # 发送post网络请求
二、session对象和requests两种方法发送的请求的区别:
1、场景
登陆某商城
查询我的订单数据
2、业务代码分析
首先这里涉及到两个接口,一个“登陆接口”,另外一个是“查询活动”的接口。
常规操作是我们 通过调用登陆接口 来获取响应的 cookie信息。
然后拿这个 cookie信息作为下一次请求的参数(cookie带有当前登陆人的信息)来请求 查询订单的接口
# 以下代码纯为了举例,没有效果的伪代码
import requests
# 登陆接口
response1 = requests.get(url_login,params,headers)
# 获取cookies信息
cookies = response.cookies
# 得到的cookies 是一个字典类型
cookie = cookies.get("cookies的key")
# 请求 查询接口
response2 = requests.get(search_url,params,headers,cookies=cookie)
# 查看查询响应的结果
response2.json()
import requests
# 获取 session对象
session = requests.session()
# 登陆接口
response1 = session.get(url_login,params,headers)
# 请求 查询接口
response2 = session.get(search_activity_url,params,headers)
# 查看查询响应的结果
response2.json()
1.通过代码的对比可发现使用session对象效率会更好,不用每次都将cookie信息放到请求内容中了
2.session对象能够自动获取到cookie并且可以在下一次请求红自动带上我们所得到的的cookie信息,不用人为的去填写