【Python网络爬虫】150讲轻松搞定Python网络爬虫付费课程笔记 篇五——Cookie加载与保存

1. 保存

介绍一个新的类:

MozillaCookieJar()

 MozillaCookieJar 是从FileCookieJar 派生而来,他能创建与Mozilla浏览器 cookietxt 兼容的FileCookieJar实例。

from urllib import request
from http.cookiejar import MozillaCookieJar

#保存
# cookiejar = MozillaCookieJar('cookie.txt')
# handler = request.HTTPCookieProcessor(cookiejar)
# opener = request.build_opener(handler)
# resp = opener.open('http://www.httpbin.org/cookies/set/course/abc')
#
# cookiejar.save()

我们能通过这个MozillaCookieJar()类创建一个cookiejar,然后依次创建了handler和opener,我们将我们需要open的网站的request url写入,最后我们将这个获取的cookie保存下来。

可是,我们运行发现这个保存下来的文件并没有我们要的cookie信息,这是为什么呢?

save()函数,这里面可以添加保存的文件名,也可以写在MozillaCookieJar()创建时。

查看一下这个save函数的源码我们发现 :

这个save函数的参数 ignore_discard 和ignore_expires默认为false,

ignore_discard = false 表示,cookie被丢弃了就不保存下来,

ignore_expires = false 表示,cookie 过期了就不保存。

因此,当我们需要保存一个登录网站的cookie信息时,我们最好将这两个忽略值改成true,这样即使cookie被丢弃和过期,依然能够将我们所要用到的cookie信息保存下来。即下面这行代码:

cookiejar.save(ignore_discard=True,ignore_expires=True)

要注意着两个参数的使用

ignore_discard = true 表示,即使cookies即将被丢弃也要保存下来

ignore_expires = true 表示,如果cookies已经过期也保存并且文件以存在时也将覆盖掉。

2. 加载

加载一个cookie信息是读取加载的内容,使用的是load(),其他部分和保存是类似的。

#加载

cookiejar = MozillaCookieJar('cookie.txt')
cookiejar.load()
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)
resp = opener.open('http://www.httpbin.org/cookies/set/course/abc')
for cookie in cookiejar:
    print(cookie)

猜你喜欢

转载自blog.csdn.net/weixin_44566432/article/details/108559759