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中的JSON使用
Apr 28 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
python如何定义带参数的装饰器
Mar 20 Python
python requests 测试代理ip是否生效
Jul 25 Python
python实现可逆简单的加密算法
Mar 22 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
TensorFLow 变量命名空间实例
Feb 11 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
python运算符之与用户交互
Apr 13 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
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
5款非常棒的Python工具
2018/01/05 Python
详解Python3注释知识点
2019/02/19 Python
Django发送邮件功能实例详解
2019/09/02 Python
基于Python实现扑克牌面试题
2019/12/11 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
给酒店员工的表扬信
2014/01/11 职场文书
高中军训感想800字
2014/02/23 职场文书
安全责任书范本
2014/04/15 职场文书
高中教师考核方案
2014/05/18 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
婚宴父母致辞
2015/07/27 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技