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中的os.path路径模块中的操作方法总结
Jul 07 Python
python append、extend与insert的区别
Oct 13 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
python装饰器深入学习
Apr 06 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python实现汽车管理系统
Nov 30 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
Python random模块的使用示例
Oct 10 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
简单谈谈Python面向对象的相关知识
Jun 28 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php文件缓存方法总结
2016/03/16 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
了解javascript中变量及函数的提升
2019/05/27 Javascript
vue实现分页栏效果
2019/06/28 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
django 模型中的计算字段实例
2020/05/19 Python
python 写一个文件分发小程序
2020/12/05 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
班主任寄语大全
2014/04/04 职场文书
保护母亲河倡议书
2014/04/14 职场文书
学校督导评估方案
2014/06/10 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
死亡赔偿协议书
2015/01/28 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs