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 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Python requests发送post请求的一些疑点
May 20 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python的几种主动结束程序方式
Nov 22 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 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使用smtp发送支持附件的邮件示例
2014/04/13 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
用js实现in_array的方法
2013/11/05 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
聊聊Python中的pypy
2018/01/12 Python
python线程池threadpool实现篇
2018/04/27 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
Python流程控制 while循环实现解析
2019/09/02 Python
tensorflow 实现数据类型转换
2020/02/17 Python
Python reduce函数作用及实例解析
2020/05/08 Python
python之语音识别speech模块
2020/09/09 Python
Python截图并保存的具体实例
2021/01/14 Python
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
复核员上岗演讲稿
2014/01/05 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
纪录片信仰观后感
2015/06/08 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript