requests.session()发送请求 和使用requests直接发送请求的区别
一、Session
在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
会话能让我们在跨请求的时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie信息。
1、创建session对象
session = requests.session()
得到session对象之后,就可以调用该对象中方法来发送请求了。
response1 = session.get(url,params,headers)
response2 = session.post(url,data,json,headers)
通过session来发送get、post、delete、put等请求并获取响应。
二、requests
requests是Python的一个第三方的库,主要用于发送网络请求,比如get、post等请求已达到获取网络响应的目的
语法如下:
import requests response1 = requests.get(url,params,headers,cookies) # 发送get网络请求 response2 = requests.post(url,data,json,headers,cookies) # 发送post网络请求 # put、delete等请求方法类似
三、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()
使用session代码如下:
# 以下代码纯为了举例,没有效果的伪代码 import requests # 获取 session对象 session = requests.session() # 登陆接口 response1 = session.get(url_login,params,headers) # 请求 查询接口 response2 = session.get(search_url,params,headers) # 查看查询响应的结果 response2.json()
补充知识点:
可以从请求方法的返回值response中可以获取的内容:
response.status_code 状态码
response.url 请求url
response.encoding 查看响应头部字符编码
response.cookies cookie信息
response.headers 头信息
response.text 文本形式的响应内容
response.content 二进制字节形式的响应内容
response.json() JSON形式的响应内容(其实就是dict字典类型)