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中的装饰器、闭包和functools的教程
Apr 02 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
python2.7实现爬虫网页数据
May 25 Python
python3实现windows下同名进程监控
Jun 21 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 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函数strip_tags的一个bug浅析
2014/05/22 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
jquery动态加载js三种方法实例
2013/08/03 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
javascript如何实现create方法
2019/11/04 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Python中map和列表推导效率比较实例分析
2015/06/17 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
PHP中如何创建和修改数组
2012/05/02 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
食品安全标语
2014/06/07 职场文书
学风建设演讲稿
2014/09/12 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
流动人口婚育证明
2014/10/19 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL