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 requests模块session代码实例

本文地址: http://www.cppcns.com/jiaoben/python/307498.html

python session模块_Python requests模块session代码实例相关推荐

  1. python2 requests模块_python requests模块详解

    requests是Python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  2. python结构体_Python实现结构体代码实例

    Python实现结构体代码实例 这篇文章主要介绍了Python实现结构体代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 # python 使 ...

  3. python画烟花_python烟花效果的代码实例

    天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花,工作之余也可以随时让程序为自己放一场烟花秀. 这个有趣的小项目并不复杂,只需一点可视化技巧,100余 ...

  4. python随机验证码_Python生成随机验证码代码实例解析

    生成6位随机验证码的3种实现方式如下: 1. 简单粗暴型:所有数字和字母都放入字符串: 2. 利用ascii编码的规律,遍历获取字符串和数字的字符串格式: 3. 引用string库. 方法1代码: i ...

  5. python图像文件压缩_python实现图片压缩代码实例

    前言 项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get ...

  6. Python爬虫实战,requests模块,Python实现告诉你女神节送什么礼物

    前言 利用Python实现告诉你女神节送什么礼物.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: requests模块: pandas模块 qrcode模块: ...

  7. Python实战案例,requests模块,Python实现获取动态图表

    前言 利用Python实现获取动态图表,废话不多说~ 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: re模块: requests模块: urllib模块: pandas模 ...

  8. Python爬虫实战,requests模块,Python实现抓取王者荣耀全套皮肤

    开发工具 Python版本: 3.6.4 相关模块: requests模块: urllib模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块 ...

  9. Python爬虫实战,requests模块,爬虫采集网易财经股票交易数据

    前言 本文给大家分享的是如何通过Python爬虫采集网易财经易数据 开发工具 Python版本: 3.8 相关模块: requests模块 parsel模块 环境搭建 安装Python并添加到环境变量 ...

最新文章

  1. Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
  2. LiveMigration之四配置高可用虚拟机
  3. wxWidgets:在 Unix (GTK+) 下打印
  4. C++中 static 关键字的作用
  5. LS-DYNA常用关键字
  6. c 语言练习__去掉多余的空白字符_修正
  7. 什么是光纤通道交换机(FC SWITCH)
  8. IT职场的一些处事之道
  9. java 正则表达式
  10. ---单元数组-创建获取重塑单元数组----求解形如A(B)
  11. FlexDisPlayRoom正在发货「可在线玩弄」
  12. java使用pdfbox拆分PDF文件
  13. STM32单片机的学习方法(方法大体适用所有开发版入门)
  14. 打造APP引导页3D切换特效
  15. 出生年月缩写c语言,如何用C语言编写输入出生年月?
  16. naming conflicts with other components【vue3】
  17. 运营商业务系统基于 KubeSphere 的容器化实践
  18. 小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”
  19. 数学建模论文基本格式(转载)
  20. DM——数据处理基础之数据、数据统计特性

热门文章

  1. 计量风险系列—两大定价产品怎么计算风险损失
  2. 把一个 ASP.NET 程序转换为了 Web Services
  3. POI的XWPFTableCell的方法
  4. VMware Workstation 12 Player之安装林耐斯-Linux Red Hat 7 -系统
  5. springmvc 静态资源 配置
  6. uiautomatorviewer 查看元素新思路
  7. Ubuntu 16.04出现chmod: 无效模式:a的问题解决
  8. 20145326蔡馨熤《计算机病毒》——代码的动静态分析结合
  9. ios 的frame,bound,center
  10. JS魔法堂:浏览器模式和文档模式怎么玩?