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中如何获取类属性的列表
Dec 26 Python
Python学习入门之区块链详解
Jul 25 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
python爬取内容存入Excel实例
Feb 20 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
python3.x中安装web.py步骤方法
Jun 23 Python
浅析python函数式编程
Sep 26 Python
pandas 操作 Excel操作总结
Mar 31 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&mysql(三)
2006/10/09 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
基于initPHP的框架介绍
2013/04/18 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python如何操作mysql
2020/08/17 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
技术总监管理岗位职责
2014/03/09 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB