python - cookie http.cookiejar模块 一. cookie1.简单介绍2.cookie的参数3.补充4.实例 二. http.cookiejar模块1.主要的类及作用2.实例
一. cookie 1.简单介绍
cookie是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密);cookie存储数的据量是有限的,不同的浏览器有不同的存储大小,但一般不超过4KB,因此cookie只能存储一些小量的数据
2.cookie的参数NAME :cookie的名称
VALUE :cookie的值
Expires :cookie的过期时间
Path :cookie的使用路径
Domain :cookie作用的域名
SECURE :是否在http协议下起作用
cookie:在请求头(headers)中,表示http请求通过cookie字段通告服务端
set-cookie:在响应头(Request headers)中,表示的是http响应报文通过set-cookie通知客户端需要保护如下的cookie数据
cookie的格式:
set-cookie:
NAME=VALUE;Expires/Maxage=DATA;Path=PATH;Domain=DOMAN_NAME;SECURE
此实例仅供参考
#利用cookie获取,对知乎网站发出请求并获取网页源代码from urllib import requesturl = 'https://www.zhihu.com/hot'headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4181.9 Safari/537.36', 'cookie': '_zap=9b17672f-c366-4009-b844-c97f5399887d; _xsrf=SWFLre2nSyaV6FubjwU8zocaLK0yCFLu; d_c0="AHDa9rT3jBGPTreBfOUIlbEGbnybWacyKYU=|1594297951"; _ga=GA1.2.731389899.1594297949; tshl=; tst=r; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1594865594,1594865722,1594904121,1594998557; capsion_ticket="2|1:0|10:1594998557|14:capsion_ticket|44:YjZmZTdkZWUxNWJjNDFhYzkyYWRlNWU4NWM3YjU0NzA=|85fb76e0c883ab567939fe85d8d2d8c4626ae3881fe1bef7ccfee1b5b91c7150"; SESSIONID=JP11PSP6QtX3jQu1SiDszlnmvn8otdcS1n0d2opJooT; _gid=GA1.2.1529568626.1594998558; _gat_gtag_UA_149949619_1=1; JOID=VFwTA0m-twr9_z29RLhR3NxQqipV9冷艳的黑裤9zqts73TrwVDIl2jKd6AMH6T5PblAJhuiA5DTVwm1VoJYBpcOd_0gHcA=; osd=VVsQAkm_sAn8_zy6R7lR3dtTqypU8eY8zqpr7HXrwFfLlmjLcKMNH6X-PrhAJxyhApDSUAq0VoNfBZYOdvojHMA=; z_c0="2|1:0|10:1594998568|4:z_c0|92:Mi4xNXQ0NUV3QUFBQUFBY05yMnRQZU1FU1lBQUFCZ0FsVk5LQTNfWHdEaC12d3NNR3RuQi1QQ3B6UW1DZGRoOGdxQldn|03bf74320c177be7cfb74e24bb8439ed2ac981d484916b0d4aab863a6fb944fb"; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1594998594; KLBRSID=76ae5fb4fba0f519d97e594f1cef9fab|1594998595|1594998555'}req = request.Request(url,headers=headers) #调用Request类对头部信息进行处理,并返回一个对象resp = request.urlopen(req) #对上一个对象发出请求,并获取一个对象print(resp.read().decode()) #对上面的对象进行读取,并进行转码(转为utf-8编码)输出的结果
主要的类有:CookieJar、FileCooKieJar、MozillaCookieJar
、LWPCookieJar
1.CookieJar
管理HTTPCookie值,存储HTTP请求生成的cookie,并向传出的HTTP请求添加cookie对象。整个cookie都存在内存中,对CookieJar实例进行回收后cookie也将丢失
2.FileCookieJar
包含的内容:(filename,delayload(加载的延迟)=None,policy(规则)=None);是CookieJar的延伸,通过检索cookie的信息并将cookie存储到文件中,filename是存储cookie的文件名,delayload为Ture时支持延迟访问的文件,
3.MozillaCookieJar
从FileCookieJar派生而来,创建与Mozill浏览器cookie.txt兼容FileCookieJar实例
4.LWPCookieJar
从FileCookieJar派生而来,创建与libwww-perl标准的set-Cookie3文件格式兼容的FileCookieJar实例
方式1:
#保存百度的cookie信息from urllib import requestfrom http.cookiejar import MozillaCookieJarcookiejar = MozillaCookieJar()header = request.HTTPCookieProcessor(cookiejar)opener = request.build_opener(header)resq = opener.open('https://baidu.com')cookiejar.save('cookies.txt') #以.txt格式文本保存cookie信息方式2:
#保存百度的cookie信息from urllib import requestfrom http.cookiejar import MozillaCookieJarcookiejar = MozillaCookieJar('cookie.txt')header = request.HTTPCookieProcessor(cookiejar)opener = request.build_opener(header)resq = opener.open('https://baidu.com')cookiejar.save()