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保持会话相关推荐

  1. python requests 示例_Python Requests模块的简单示例

    这篇文章主要为大家详细介绍了Python Requests模块的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  2. python绘制蚊香形_Python requests发送post请求的一些疑点

    前言 在Python爬虫中,使用requests发送请求,访问指定网站,是常见的做法.一般是发送GET请求或者POST请求,对于GET请求没有什么好说的,而发送POST请求,有很多朋友不是很清楚,主要 ...

  3. python自动点赞软件_python requests 简单实现易班登录,自动点赞,评论,发表

    小编能力有限,本文纯属瞎编,如有雷同,你去打辅导员涩 一.前戏 有个操蛋,操蛋,操蛋的辅导员促使小编成长,原因:易班需要活跃度,辅导员安排班上每个人必须去易班上 写文章,写评论,发投票...  我觉得 ...

  4. python mount回调函数_python requests模块中返回时间elapsed解析

    一.问题: Python 中requests库在发送http请求时相当方便好用,但在使用时一直受一个问题困扰,怎么才能查看请求时长呢? 自己写时间函数再相减?NO,这个方法肯定不行. 二.解决: 好吧 ...

  5. python访问网页被拒_Python Requests.get访问网页403错误

    Pycharm 2018.1, Python 3.6, 通过Pycharm的File->Settings->Plugins搜索Requests安装上去. import requests r ...

  6. 工信部python证书多少钱_python requests SSL证书问题

    错误信息如下: requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_ser ...

  7. python爬豆瓣电视剧_python requests库爬取豆瓣电视剧数据并保存到本地详解

    首先要做的就是去豆瓣网找对应的接口,这里就不赘述了,谷歌浏览器抓包即可,然后要做的就是分析返回的json数据的结构: https://movie.douban.com/j/search_subject ...

  8. python 自动化框架打包_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  9. python requests 接口测试_python+requests接口测试基础

    一.request库七种请求方法 七种方法都有三个基础的参数(method,url,**kwargs) method:请求方式,对应get/put/post等请求方式 url:需要进行接口测试的url ...

最新文章

  1. 福利 | 学习超级用户运营,都来U-Time六城巡回沙龙”!
  2. 计算机科技协会竞选书,加入计算机协会申请书
  3. 网站推广——网站制作二维码只是为了更好的实现网站推广
  4. mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体
  5. javascript for in,for each,for循环遍历区别
  6. php图像处理原生函数,php图像处理函数imagecopyresampled的用法
  7. HTML5新增元素之Canvas-实现太极八卦图和扇子
  8. 使用Adobe acrobat压缩pdf大小
  9. 麟龙指标通达信指标公式源码_麟龙指标通达信指标公式源码
  10. 我的世界服务器哪个有自动铺路,超简单命令方块铺路机 我的世界自动铺路机制作教程(附存档)...
  11. 无人机成测绘界“全能战士”
  12. Windows系统文件结构
  13. 谭松韵被造谣ee文件与服务器,黄磊何炅心疼谭松韵被造谣!从和张子枫相处看出人品!...
  14. 大数据揭秘区块链人才大迁徙:那个你身边悄悄离职的人去哪儿了?
  15. WMCMS小说系统采集插件-WMCMS小说系统采集器下载
  16. 【金猿产品展】HIO——一体化抖音电商运营投放管理平台
  17. Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
  18. 改变世界vs娱乐自己
  19. 整理了一系列的JavaScript树操作方法,不用再一遍又一遍的百度了
  20. Share a link about Resposive Web Design

热门文章

  1. php中$_get和$_post如何使用,怎么使用超级全局变量$_POST与$_GET
  2. 今日头条适配方案_今日头条信息流广告创意优化方案!
  3. Java黑皮书课后题第8章:8.29(相同的数组)如果两个二维数组m1和m2具有相同的内容,则它们是相同的。编写一个方法,如果m1和m2相同的话,返回true
  4. Java黑皮书课后题第5章:5.5(千克与磅之间的互换)编写一个程序,并排显示下面两个表格
  5. nslookup type值_网络工程师之nslookup命令
  6. [转载]常用CASE工具介绍
  7. 几种简单的排序算法(JAVA)
  8. EntityFramework附加实体
  9. 学用MVC4做网站五:5.1添加文章
  10. Oracle 常用dump命令