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 域名分析工具实现代码
Jul 15 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
Python文件操作基础流程解析
Mar 19 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 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设计模式 Interpreter(解释器模式)
2011/06/26 PHP
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
php实现aes加密类分享
2014/02/16 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
vue resource发送请求的几种方式
2019/09/30 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
通俗讲解python 装饰器
2020/09/07 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
三分钟演讲稿事例
2014/03/03 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
六查六看心得体会
2014/10/14 职场文书
入团介绍人意见范文
2015/06/04 职场文书
给学校的建议书400字
2015/09/14 职场文书