Python3中关于cookie的创建与保存


Posted in Python onOctober 21, 2018

1.cookie的作用

cookie 是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据,就像有些网站上的一些数据是需要登录后才能看得到,那么想抓取某个页面内容,就需要用到cookie来模拟登陆了。

在用cookie模拟登陆的时候,需要用到python中的CookieJar,CookieJar中有一些子类,例如:

  • FileCookieJar,LWPCookieJar,MoziliaCookieJar
  • CookieJar 管理http生成的cookie,负责cookie的存储工作,向http当中添加指定的cookie

MozillaCookieJarLWPCookieJar类都是FileCookieJar的子类。实现了具体的把cookie内容保存为文件的方法。只是这两个类对应的标准不同而已。

2 获取cookie

from http.cookiejar import CookieJar,LWPCookieJar
from urllib.request import Request,urlopen,HTTPCookieProcessor,build_opener
from urllib.parse import urlencode
import ssl
# ----------------------------------------获取cookie---------------------------
# 生成一个管理cookie的对象
cookie_obj = CookieJar()
# 创建一个支持cookie的对象,对象属于HTTPCookieProcessor
cookie_handler = HTTPCookieProcessor(cookie_obj)  
#创建一个opener
opener = build_opener(cookie_handler)  
response = opener.open('http://www.baidu.com')
print(response)
#打印cookie
for cookie in cookie_obj:
  print('key:',cookie.name)
  print('value:',cookie.value)

3 保存cookie的文件

from http.cookiejar import CookieJar,LWPCookieJar
from urllib.request import Request,urlopen,HTTPCookieProcessor,build_opener
filename = 'neihan.txt'
# 设置cookie保存的文件
cookie_obj = LWPCookieJar(filename=filename)
# 创建一个支持cookie的对象,对象属于HTTPCookieProcessor
cookie_handler = HTTPCookieProcessor(cookie_obj)
#创建一个opener
opener = build_opener(cookie_handler)
#请求网页
response = opener.open('http://www.neihanshequ.com')
# 保存cookie到指定的文件当中去
# ignore_expires=True 即便目标cookie已经在文件中存在,仍然对其写入
# ignore_discard=True  即便cookie将要/已经过期,仍然写入
cookie_obj.save(ignore_expires=True,ignore_discard=True)

4 使用本地的cookie进行请求

from http.cookiejar import CookieJar,LWPCookieJar
from urllib.request import Request,urlopen,HTTPCookieProcessor,build_opener
cookie = LWPCookieJar()
#从文件中读取cookie到变量
cookie.load('neihan.txt')
request = Request('http://www.neihanshequ.com')
# 创建一个支持cookie的对象,对象属于HTTPCookieProcessor
cookie_handler = HTTPCookieProcessor(cookie)
#创建一个opener
opener = build_opener(cookie_handler)
#请求网页
response = opener.open(request)
# print(response.read().decode())

5 使用cookie进行模拟登陆

from http.cookiejar import CookieJar,LWPCookieJar
from urllib.request import Request,urlopen,HTTPCookieProcessor,build_opener
from urllib.parse import urlencode
import ssl
cookie = LWPCookieJar(filename='meishi.txt')
cookie_handler = HTTPCookieProcessor(cookie)
opener = build_opener(cookie_handler)
headers={
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'
}
post_url = 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fi.meishi.cc%2Flogin.php%3Fac%3Dzhuce'
# urlencode对url当中的参数进行编码
# urlencode()编码的对象为字典类型
post_data = urlencode({
  'username':'***********',  #自己的登陆账号
  'password':'************'  #自己的登陆密码
})
# 请求url 并传参,设置编码方式
request = Request(post_url,bytes(post_data,encoding='utf-8'))
# 解决证书问题
ssl._create_default_https_context = ssl._create_unverified_context
response = opener.open(request)
print(response.read().decode())
cookie.save(ignore_discard=True,ignore_expires=True)

这里的post_url是抓包获取来的

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
python实现斗地主分牌洗牌
Jun 22 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
Python Numpy库的超详细教程
Apr 06 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 #Python
解决安装python库时windows error5 报错的问题
Oct 21 #Python
Scrapy使用的基本流程与实例讲解
Oct 21 #Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 #Python
Python3 读、写Excel文件的操作方法
Oct 20 #Python
python numpy数组的索引和切片的操作方法
Oct 20 #Python
详解Python字典小结
Oct 20 #Python
You might like
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
php单件模式结合命令链模式使用说明
2008/09/07 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
yii添删改查实例
2015/11/16 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
python队列queue模块详解
2018/04/27 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
合伙经营协议书范本
2014/04/18 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
满月酒邀请函
2015/01/30 职场文书
居安思危观后感
2015/06/11 职场文书
校长新学期寄语2016
2015/12/04 职场文书