Python requests模块cookie实例解析


Posted in Python onApril 14, 2020

cookie并不陌生,与session一样,能够让http请求前后保持状态。与session不同之处,在于cookie数据仅保存于客户端。requests也提供了相应到方法去处理cookie。

在python requests模块-session中,我们知道了requests中的session对象能够在请求之间保持cookie,它极大地方便了我们去使用cookie。当我们想设置方法级别中的请求时,可以如下面示例一样操作。

import requests
s = requests.session()
# 第一步:发送一个请求,用于设置请求中的cookies
cookies = dict(cookies_are='cookie1')
# tips: http://httpbin.org能够用于测试http请求和响应
r1 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
print(r1.text)
# 第二步:发送一个请求,用于再次设置请求中的cookies
cookies = dict(cookies_are='cookie2')
r2 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
print(r2.text)

运行结果

# r1.text
{
 "cookies": {
  "cookies_are": "cookie1"
 }
}
# t2.text
{
 "cookies": {
  "cookies_are": "cookie2"
 }
}

从结果中可以看出,该方法让cookie只作用了单个请求,因为方法级别的参数不会被跨请求保持,这是requests中session对象的机制,这里不再赘述。那么,如果我们想跨请求保持cookie呢?这里依旧可以应用session对象的跨请求机制,方法如下:

import requests
s = requests.session()
s.cookies.update({'cookies_are': 'cookie'})
r = s.get(url='http://httpbin.org/cookies')
print(r.text)

值得一提的是,除了直接用字典去赋值cookie之外,requests还提供了RequestsCookieJar对象供我们使用,它的行为类似字典,但接口更为完整,适合跨域名跨路径使用。来看一个官方文档中的示例。

import requests
jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)
print(r.text)

运行结果

{
 "cookies": {
  "tasty_cookie": "yum"
 }
}

从结果中,可以看出我们利用RequestsCookieJar对象,达到了根据不同请求路径,发送不同cookie的效果,进一步增加了操作cookie的灵活性。

参考文档

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

https://requests.readthedocs.io/en/master/user/quickstart/#cookies

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

Python 相关文章推荐
进一步探究Python的装饰器的运用
May 05 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
Python基于mysql实现学生管理系统
Feb 21 Python
Python基础学习之函数方法实例详解
Jun 18 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
Python requests模块session代码实例
Apr 14 #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
You might like
php自定义函数之递归删除文件及目录
2010/08/08 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
Python正则简单实例分析
2017/03/21 Python
python协程之动态添加任务的方法
2019/02/19 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
基于Python函数和变量名解析
2019/07/19 Python
python路径的写法及目录的获取方式
2019/12/26 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
十一酒店活动方案
2014/02/20 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers