python--cookie和http.cookiejar模块的介绍及用法

python - cookie http.cookiejar模块

  • 一. cookie
    • 1.简单介绍
    • 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协议下起作用

3.补充

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

4.实例

此实例仅供参考

#利用cookie获取,对知乎网站发出请求并获取网页源代码
from urllib import request


url = '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_z29RLhR3NxQqipV9uU9zqts73TrwVDIl2jKd6AMH6T5PblAJhuiA5DTVwm1VoJYBpcOd_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编码)

输出的结果
python--cookie和http.cookiejar模块的介绍及用法_第1张图片

二. http.cookiejar模块

1.主要的类及作用

主要的类有: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实例

2.实例

方式1:

#保存百度的cookie信息
from urllib import request
from http.cookiejar import MozillaCookieJar


cookiejar = 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 request
from http.cookiejar import MozillaCookieJar


cookiejar = MozillaCookieJar('cookie.txt')
header = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(header)
resq = opener.open('https://baidu.com')
cookiejar.save()

你可能感兴趣的:(日常笔记)