1.cookie的作用

cookie 是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据,就像有些网站上的一些数据是需要登录后才能看得到,那么想抓取某个页面内容,就需要用到cookie来模拟登陆了。

在用cookie模拟登陆的时候,需要用到python中的CookieJar,CookieJar中有一些子类,例如:

FileCookieJar,LWPCookieJar,MoziliaCookieJar

CookieJar 管理http生成的cookie,负责cookie的存储工作,向http当中添加指定的cookie

MozillaCookieJar和LWPCookieJar类都是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是抓包获取来的

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

本文标题: Python3中关于cookie的创建与保存

本文地址: http://www.cppcns.com/jiaoben/python/242421.html

python cookies过期_Python3中关于cookie的创建与保存相关推荐

  1. java cookie过期_Java中Servlet Cookie设置过期时间(expires,max-age)

    Java中Servlet Cookie设置过期时间(expires,max-age) expires或者max-age指定了coolie的生存期,默认情况下coolie是暂时存在的,他们存储的值只在浏 ...

  2. python cookies是什么_Python获取cookie有什么用

    cookie是什么? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).在web开发中,经常需要对会话进行跟踪.因为http请求是无状态协议 ...

  3. python mysql数据库_Python3中操作MySQL数据库

    0.安装 pip install pymysql 1.打开数据库连接 import pymysql db = pymysql.connect(host="数据库地址", user= ...

  4. python requests 示例_Python3中requests库学习01(常见请求示例)

    1.请求携带参数的方式 1.带数据的postdata=字典对象 2.带header的postheaders=字典对象 3.带json的postjson=json对象 4.带参数的postparams= ...

  5. python正则表达式 身份证_python3中6种常用正则表达式

    前言:在使用python开发中,有时候经常需要对一些常用的字段进行匹配校验:例如:邮箱.手机号.身份证号.域名.邮编.空格处理等等,这个用re模块的正则表达式就可以很好校验出来: 本篇教程就来说说常用 ...

  6. python requests示例_Python3中requests库学习01(常见请求示例)

    1.请求携带参数的方式 1.带数据的postdata=字典对象 2.带header的postheaders=字典对象 3.带json的postjson=json对象 4.带参数的postparams= ...

  7. python线程等待_python3 中 Event.wait 多线程等待

    原博文 2018-04-26 20:45 − event.wait(time) 等待 time 时间后,执行下一步.或者在调用 event.set() 后立即执行下一步. event.clear() ...

  8. python yield理解_Python3 中 Yield 理解与使用

    转自Felix文章 Python3 中 yield 对初学者一直是一个难点存在,网上很多教程,噼里啪啦写了很多,也举了很多例子,但是读完之后还是不知所以然,下面问题还是不知道如何回答,内容有点多,有些 ...

  9. python全局代理_Python3 中代理使用方法总结

    作者:崔庆才 请勿转载 配套免费视频教程:Python3爬虫三大案例实战分享:猫眼电影.今日头条街拍美图.淘宝美食 Python3爬虫三大案例实战分享 爬取知乎所有用户详细信息 https://edu ...

最新文章

  1. Github火爆的项目,用聪明的方式学习Vim!
  2. 推荐一套开源中文课:自然语言处理(NLP)专题
  3. 第二篇:salt-api使用填坑指南
  4. ERC721关于NFT的学习和理解
  5. SQL优化技巧--远程连接对象引起的CTE性能问题
  6. 小米手机上安装https证书(例如pem证书,crt证书)详解
  7. 自适应个人收款页HTML源码
  8. 你需要知道的、有用的 Python 功能和特点
  9. docker的核心原理-cgroup
  10. 如何卸载twincat3_TwinCAT软件安装FAQ
  11. sam文件获取与解密
  12. 51单片机DS18B20测温LCD12864显示
  13. 51单片机模拟I2C读写M24LR04
  14. 避雷:六种职场着装可能导致你面试失败
  15. 微信公众号引流源码?基本上没啥用!
  16. 强烈推荐优秀英文网站
  17. Matlab+UNet+LIDC 32行代码训练自己的肺结节数据集
  18. 线程和进程的小结(未完待续)
  19. 产品沉思录精选:交易平台的金字塔进阶
  20. Elementui中在表格中插入图片

热门文章

  1. JPA分页查询与条件分页查询
  2. Android 友盟推送开发
  3. highcharts x轴 按照时间 datetime排序
  4. 小程序 获取当前所在地理位置 城市 信息
  5. 女生学医检好还是学计算机好,女生学医选择什么专业好?
  6. html锚点反向联动,小程序菜单左右联动
  7. 1042. Shuffling Machine (20)
  8. 如何使用 Microsoft Azure Media Services 现场直播,(Live Streaming) 直播流媒体系统
  9. EJB通过ANT提高EJB应用程序的开发效率、无状态发展本地接口bean、开发状态bean...
  10. Teamwork(The sixth day of the team)