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类参数self使用示例
Feb 17 Python
在python中的socket模块使用代理实例
May 29 Python
Python中用Descriptor实现类级属性(Property)详解
Sep 18 Python
python求pi的方法
Oct 08 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
使用pytorch进行图像的顺序读取方法
Jul 27 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
浅谈编码,解码,乱码的问题
2016/12/30 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
基于django传递数据到后端的例子
2019/08/16 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
影视动画专业个人的自我评价
2013/12/31 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android