python 处理cookie

cookie的处理需要相关的Handler

我们先用实例来看看怎么样把网站的cookie获取下来

import http.cookiejar,urllib.request

cookie=http.cookiejar.CookieJar()
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
response=opener.open('https://baidu.com')
for item in cookie:
    print(item.name+'='+item.value)

首先声明一个CookieJar的对象,接下来需要利用HTTPCookieProcessor来构建Handler

最后利用build_opener()方法构建Opener,执行open()函数

运行结果如下:

BAIDUID=FC6E4B8045B787B3762FD62D801DB4CB:FG=1
BIDUPSID=FC6E4B8045B787B3762FD62D801DB4CB
H_PS_PSSID=1432_21119_18560_29523_29521_28519_29099_28838
PSTM=1563779558
delPer=0
BDSVRTM=0
BD_HOME=0

可以清楚的看到,这里输出每条Cookie的名称和值

以文件形式保存的话如下

filename='cookie.txt'
cook=http.cookiejar.LWPCookieJar(filename)
handle=urllib.request.HTTPCookieProcessor(cook)
opene=urllib.request.build_opener(handle)
rep=opene.open('https://baidu.com')
cook.save(ignore_discard=True,ignore_expires=True)

结果保存的形式如下

#LWP-Cookies-2.0
Set-Cookie3: BAIDUID="FC6E4B8045B787B3D44763F6563C6E1C:FG=1"; path="/"; domain=".baidu.com"; path_spec; domain_dot; expires="2087-08-09 10:26:45Z"; version=0
Set-Cookie3: BIDUPSID=FC6E4B8045B787B3D44763F6563C6E1C; path="/"; domain=".baidu.com"; path_spec; domain_dot; expires="2087-08-09 10:26:45Z"; version=0
Set-Cookie3: H_PS_PSSID=1446_21091_29523_29518_28518_29099_28833_29459; path="/"; domain=".baidu.com"; path_spec; domain_dot; discard; version=0
Set-Cookie3: PSTM=1563779558; path="/"; domain=".baidu.com"; path_spec; domain_dot; expires="2087-08-09 10:26:45Z"; version=0
Set-Cookie3: delPer=0; path="/"; domain=".baidu.com"; path_spec; domain_dot; discard; version=0
Set-Cookie3: BDSVRTM=0; path="/"; domain="www.baidu.com"; path_spec; discard; version=0
Set-Cookie3: BD_HOME=0; path="/"; domain="www.baidu.com"; path_spec; discard; version=0

那我们又该怎么样从文件读取并利用呢?

filename='cookie.txt'
cook=http.cookiejar.LWPCookieJar(filename)
handle=urllib.request.HTTPCookieProcessor(cook)
opene=urllib.request.build_opener(handle)
rep=opene.open('https://baidu.com')
cook.save(ignore_discard=True,ignore_expires=True)
print(rep.read().decode('utf8'))

在这里,调用load()方法,读取本地的cookie文件,获取到了cookie的内容。不过前提条件是我们首先生成LWPCookieJar格式的cookie文件。运行正常,我们将会输出百度的源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值