Cookie获取、保存与读取
为什么要使⽤Cookie呢?
Cookie,指某些⽹站为了辨别⽤户⾝份、进⾏session跟踪⽽储存在⽤户本地终端上的数据(通常经过加密)
⽐如说有些⽹站需要登录后才能访问某个页⾯,在登录之前,你想抓取某个页⾯内容是不允许的。那么我们可以利⽤Urllib库保存我们登录的Cookie,然后再抓取其他页⾯就达到⽬的了。
1|11.1 Opener
当你获取⼀个URL你使⽤⼀个opener(⼀个urllib.OpenerDirector的实例)。在前⾯,我们都是使⽤的默认的opener,也就是urlopen。它是⼀个特殊的opener,可以理解成opener的⼀个特殊实例,传⼊的参数仅仅是url,data,timeout。
如果我们需要⽤到Cookie,只⽤这个opener是不能达到⽬的的,所以我们需要创建更⼀般的opener来实现对Cookie的设置
1|21.2 Cookielib
cookielib模块的主要作⽤是提供可存储cookie的对象,以便于与urllib模块配合使⽤来访问Internet资源。Cookielib模块⾮常强⼤,我们可以利⽤本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,⽐如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar
我们使⽤以上⽅法将cookie保存到变量中,然后打印出了cookie中的值,运⾏结果如下
以上程序的原理如下
创建⼀个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利⽤这个cookie来访问其他⽹址。
案例2:cookie保存⽂件的读取
quest import build_opener, Request
quest import HTTPCookieProcessor
kiejar import MozillaCookieJar
from urllib.parse import urlencode
def use_cookie():
# 请求头
headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/65.0.3325.181 Safari/537.36”}
info_url = "www.sxt/index/user.html"
# 创建保存可以序列化cookie的⽂件对象
cookie = MozillaCookieJar()
# 加载cookie⽂件
cookie.load("", ignore_discard=True, ignore_expires=True)
# 构造可保存cookie的控制器
c_handler = HTTPCookieProcessor(cookie)
# 构造opener
opener = build_opener(c_handler)
# 构造访问个⼈页⾯请求
req1 = Request(info_url, headers=headers)
# 发送请求
resp2 = opener.open(req1)
# 打印信息
ad().decode())
if name == ‘main’:
# get_cookie()
session如何设置和读取
use_cookie()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。