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的三目运算符和not in运算符使用示例
Mar 03 Python
详解Python中with语句的用法
Apr 15 Python
简单上手Python中装饰器的使用
Jul 12 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
Python高级特性与几种函数的讲解
Mar 08 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
python读取ini配置文件过程示范
Dec 23 Python
利用Python脚本实现自动刷网课
Feb 03 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php include类文件超时问题处理
2015/02/06 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
JS定时器实例
2013/04/17 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
python 数据加密代码
2008/12/24 Python
Python常用库推荐
2016/12/04 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
django实现后台显示媒体文件
2020/04/07 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
高中的职业生涯规划书
2013/12/28 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
财务负责人任命书
2014/06/06 职场文书
介绍信怎么写
2015/05/05 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
56句经典英文座右铭
2019/08/09 职场文书
警用民用对讲机找不同
2022/02/18 无线电
Redis 限流器
2022/05/15 Redis