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 中的列表解析和生成表达式
Mar 10 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
Python最长公共子串算法实例
Mar 07 Python
python使用分治法实现求解最大值的方法
May 12 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
python实现识别相似图片小结
Feb 22 Python
用Python实现随机森林算法的示例
Aug 24 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
Python代码块批量添加Tab缩进的方法
Jun 25 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
python 操作hive pyhs2方式
Dec 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处理json格式数据经典案例总结
2016/05/19 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
Python中下划线的使用方法
2015/03/27 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
Python构建XML树结构的方法示例
2017/06/30 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
Yahoo-PHP面试题4
2012/05/05 面试题
高三自我鉴定
2013/10/23 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2014年党务工作总结
2014/11/25 职场文书
公司财务管理制度
2015/08/04 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL