python的requests.session()_Python+requests之session保持会话
session()方法
会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie,如果你向同一主机发送
多个求,底层的 TCP 连接将会被重用,从而带来显著的性能提升
session()中添加cookie
import requests
# 字典格式cookie添加方法
r = requests.session()
cookie = {"cookie1": "value_1", "cookie2": "value2"}
c = requests.cookies.RequestsCookieJar()
for key, value in cookie.items():
c.set(key, value) # 添加cookie到RequestsCookieJar中
r.cookies.update(c) # 将RequestsCookieJar中的cookie更新到session()中
print(r.cookies)
# jar包格式cookie添加方法
s = requests.session()
print(s.cookies) # 打印session会话中cookies为空
s.cookies.update(r.cookies) # 将变量r中的jar包格式cookie直接更新到赋值session对象的变量s中
print(s.cookies) # 打印发现变量r中的jar包格式cookie直接更新到会话对象s中
session()中添加cookie有两种情况,第一种cookie传参为字典格式,则需要通过requests.cookies.RequestsCookieJar()的set
方法将转换成Jar包格式然后update到session()对象中,第二种cookie直接传参Jar包格式。这种直接update将cookies更新到session()
对象中
跨请求保持会话实例:
import requests
s = requests.Session()
r1 = s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
print(r1.text)
# '{"cookies": {"sessioncookie": "123456789"}}'
r2 = s.get("http://httpbin.org/cookies")
print(r2.text)
# '{"cookies": {"sessioncookie": "123456789"}}'
注:任何你传递给请求方法的字典都会与已设置会话层数据合并。方法层的参数覆盖会话的参数。
import requests
s = requests.Session()
r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r.text)
# '{"cookies": {"from-my": "browser"}}'
r = s.get('http://httpbin.org/cookies')
print(r.text)
# '{"cookies": {}}
注:使用了会话, 方法级别的参数也不会被跨请求保持,如下面的例子只会和第一个请求发送 cookie ,而非第二个。
import requests
s = requests.Session()
c = requests.cookies.RequestsCookieJar()
c.set('from-my', 'Chrome')
s.cookies.update(c)
# session()添加key为'from-my'的cookie
r1 = s.get('http://httpbin.org/cookies')
print(r1.text)
# '{"cookies": {'from-my': 'Chrome'}}
# 方法层次覆盖添加key为'from-my'但value为 browser的cookies
r2 = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r2.text)
# '{"cookies": {"from-my": "browser"}}'
# 跨请求后覆盖的cookie复原
r3 = s.get('http://httpbin.org/cookies')
print(r3.text)
# '{"cookies": {'from-my': 'Chrome'}}
session()中添加头部信息
相对来说session()中添加头部信息就简单直白多
import requests
s = requests.Session()
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)
从会话字典参数中移除一个值
想省略字典参数中一些会话层的键。要做到这一点,你只需简单地在方法层参数中将那个键的值设置为None,那个键就会被自动省略掉
import requests
s = requests.Session()
s.headers.update({'x-test': 'true'})
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)
s.headers.update({'x-test': None})
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)
python的requests.session()_Python+requests之session保持会话相关推荐
- python requests 示例_Python Requests模块的简单示例
这篇文章主要为大家详细介绍了Python Requests模块的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...
- python绘制蚊香形_Python requests发送post请求的一些疑点
前言 在Python爬虫中,使用requests发送请求,访问指定网站,是常见的做法.一般是发送GET请求或者POST请求,对于GET请求没有什么好说的,而发送POST请求,有很多朋友不是很清楚,主要 ...
- python自动点赞软件_python requests 简单实现易班登录,自动点赞,评论,发表
小编能力有限,本文纯属瞎编,如有雷同,你去打辅导员涩 一.前戏 有个操蛋,操蛋,操蛋的辅导员促使小编成长,原因:易班需要活跃度,辅导员安排班上每个人必须去易班上 写文章,写评论,发投票... 我觉得 ...
- python mount回调函数_python requests模块中返回时间elapsed解析
一.问题: Python 中requests库在发送http请求时相当方便好用,但在使用时一直受一个问题困扰,怎么才能查看请求时长呢? 自己写时间函数再相减?NO,这个方法肯定不行. 二.解决: 好吧 ...
- python访问网页被拒_Python Requests.get访问网页403错误
Pycharm 2018.1, Python 3.6, 通过Pycharm的File->Settings->Plugins搜索Requests安装上去. import requests r ...
- 工信部python证书多少钱_python requests SSL证书问题
错误信息如下: requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_ser ...
- python爬豆瓣电视剧_python requests库爬取豆瓣电视剧数据并保存到本地详解
首先要做的就是去豆瓣网找对应的接口,这里就不赘述了,谷歌浏览器抓包即可,然后要做的就是分析返回的json数据的结构: https://movie.douban.com/j/search_subject ...
- python 自动化框架打包_python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python requests 接口测试_python+requests接口测试基础
一.request库七种请求方法 七种方法都有三个基础的参数(method,url,**kwargs) method:请求方式,对应get/put/post等请求方式 url:需要进行接口测试的url ...
最新文章
- 福利 | 学习超级用户运营,都来U-Time六城巡回沙龙”!
- 计算机科技协会竞选书,加入计算机协会申请书
- 网站推广——网站制作二维码只是为了更好的实现网站推广
- mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体
- javascript for in,for each,for循环遍历区别
- php图像处理原生函数,php图像处理函数imagecopyresampled的用法
- HTML5新增元素之Canvas-实现太极八卦图和扇子
- 使用Adobe acrobat压缩pdf大小
- 麟龙指标通达信指标公式源码_麟龙指标通达信指标公式源码
- 我的世界服务器哪个有自动铺路,超简单命令方块铺路机 我的世界自动铺路机制作教程(附存档)...
- 无人机成测绘界“全能战士”
- Windows系统文件结构
- 谭松韵被造谣ee文件与服务器,黄磊何炅心疼谭松韵被造谣!从和张子枫相处看出人品!...
- 大数据揭秘区块链人才大迁徙:那个你身边悄悄离职的人去哪儿了?
- WMCMS小说系统采集插件-WMCMS小说系统采集器下载
- 【金猿产品展】HIO——一体化抖音电商运营投放管理平台
- Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
- 改变世界vs娱乐自己
- 整理了一系列的JavaScript树操作方法,不用再一遍又一遍的百度了
- Share a link about Resposive Web Design
热门文章
- php中$_get和$_post如何使用,怎么使用超级全局变量$_POST与$_GET
- 今日头条适配方案_今日头条信息流广告创意优化方案!
- Java黑皮书课后题第8章:8.29(相同的数组)如果两个二维数组m1和m2具有相同的内容,则它们是相同的。编写一个方法,如果m1和m2相同的话,返回true
- Java黑皮书课后题第5章:5.5(千克与磅之间的互换)编写一个程序,并排显示下面两个表格
- nslookup type值_网络工程师之nslookup命令
- [转载]常用CASE工具介绍
- 几种简单的排序算法(JAVA)
- EntityFramework附加实体
- 学用MVC4做网站五:5.1添加文章
- Oracle 常用dump命令