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实现从网络下载文件并获得文件大小及类型的方法
Apr 28 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
谈谈如何手动释放Python的内存
Dec 17 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
django js实现部分页面刷新的示例代码
May 28 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
Python使用enumerate获取迭代元素下标
Feb 03 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
python实现快递价格查询系统
Mar 03 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 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版(2)
2006/10/09 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
Swiper实现轮播图效果
2017/07/03 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
详解python中init方法和随机数方法
2019/03/13 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
利用python 读写csv文件
2020/09/10 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
造价工程师个人求职信
2013/09/21 职场文书
海洋科学专业求职信
2014/08/10 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
bose降噪耳机音能消除人声吗
2022/04/19 数码科技