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多线程http下载实现示例
Dec 30 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
python生成器generator用法实例分析
Jun 04 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
May 25 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
python django中8000端口被占用的解决
Dec 17 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Python爬虫后获取重定向url的两种方法
Jan 19 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
python实现简单的聊天小程序
Jul 07 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
实用函数4
2007/11/08 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
javascript 写类方式之八
2009/07/05 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python 杀死自身进程的实现方法
2019/07/01 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
工程总经理工作职责
2013/12/09 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014年新教师工作总结
2014/11/08 职场文书
2016年万圣节活动总结
2016/04/05 职场文书