Python requests模块session代码实例


Posted in Python onApril 14, 2020

http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制。requests也提供了相应的方法去操纵它们。

requests中的session对象能够让我们跨http请求保持某些参数,即让同一个session对象发送的请求头携带某个指定的参数。当然,最常见的应用是它可以让cookie保持在后续的一串请求中。

下面,通过官方文档中的示例来了解如何使用它。

import requests
s = requests.Session()
# 第一步:发送一个请求,用于设置请求中的cookies
# tips: http://httpbin.org能够用于测试http请求和响应
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# 第二步:再发送一个请求,用于查看当前请求中的cookies
r = s.get("http://httpbin.org/cookies")
print(r.text)

运行结果

{
 "cookies": {
  "sessioncookie": "123456789"
 }
}

从结果中我们可以看出,第二次请求已经携带上了第一次请求所设置的cookie,即通过session达到了保持cookie的目的。示例中创建了一个requests.Session()对象,通过该对象来进行http请求操作,该操作基本类似于requests.request()

由于session让请求之间具有了连贯性,那么,就有了跨请求参数和非跨请求参数的区别。即有时我想让所有请求均带有某个参数,而有时我只是想让单独的一条请求带上临时的参数。通过下面的例子来了解如何使用。

import requests

s = requests.Session()
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
r1 = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r1.text)
# 'x-test' is sent
r2 = s.get('http://httpbin.org/headers')
print(r2.text)

运行结果

# r1.text
{
 "headers": {
  "Accept": "*/*", 
  "Accept-Encoding": "gzip, deflate", 
  "Host": "httpbin.org", 
  "User-Agent": "python-requests/2.22.0", 
  "X-Amzn-Trace-Id": "Root=1-5e91656f-b99f14a4d6f47f9e55a90bb4", 
  "X-Test": "true", 
  "X-Test2": "true"
 }
}
# r2.text
{
 "headers": {
  "Accept": "*/*", 
  "Accept-Encoding": "gzip, deflate", 
  "Host": "httpbin.org", 
  "User-Agent": "python-requests/2.22.0", 
  "X-Amzn-Trace-Id": "Root=1-5e91656f-e9741db4c2ca2fd6e0628396", 
  "X-Test": "true"
 }
}

从结果中我们可以得出两条结论:

session可以为请求方法提供缺省数据,比如第一次请求中的{'x-test': 'true'}就是缺省数据,此时的缺省数据就是跨请求参数。
方法级别的参数不会被跨请求保持,比如第二次请求时,没有携带headers={'x-test2': 'true'},返回的结果中也没有{'x-test2': 'true'},说明该参数没有在第一次请求后被保持住。

参考资料

https://github.com/psf/requests/blob/master/requests/sessions.py

https://requests.readthedocs.io/en/master/user/advanced/#session-objects

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过字典dict判断指定键值是否存在的方法
Mar 21 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
python生成器与迭代器详解
Jan 01 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
python的slice notation的特殊用法详解
Dec 27 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
django上传文件的三种方式
Apr 29 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 #Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 #Python
Jupyter Notebook输出矢量图实例
Apr 14 #Python
pygame实现弹球游戏
Apr 14 #Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 #Python
Python request操作步骤及代码实例
Apr 13 #Python
jupyter notebook插入本地图片的实现
Apr 13 #Python
You might like
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
CodeIgniter中实现泛域名解析
2014/07/19 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
Python如何输出整数
2020/06/07 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
python中可以声明变量类型吗
2020/06/18 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
文明演讲稿范文
2014/05/12 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
给老师的一封感谢信
2015/01/20 职场文书
党员评议自我评价
2015/03/03 职场文书
公司搬迁通知
2015/04/20 职场文书
《花钟》教学反思
2016/02/17 职场文书