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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
用 python 进行微信好友信息分析
Nov 28 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python简单操作excle的方法
2018/09/12 Python
详解django2中关于时间处理策略
2019/03/06 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
策划助理岗位职责
2013/11/18 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
工作时间上网检讨书
2014/02/03 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
出生公证书
2015/01/23 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
民间借贷借条范本
2015/05/25 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
导游词之山海关
2019/12/10 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python