Python編程:cookiejar的使用

CookieJar類(lèi)的子類(lèi):

CookieJar:管理HTTP cookie值、存儲(chǔ)HTTP請(qǐng)求生成的cookie、向傳出的HTTP請(qǐng)求添加cookie的對(duì)象。整個(gè)cookie都存儲(chǔ)在內(nèi)存中,對(duì)CookieJar實(shí)例進(jìn)行垃圾回收后cookie也將丟失。

FileCookieJar:從CookieJar派生而來(lái),用來(lái)創(chuàng)建FileCookieJar實(shí)例,檢索cookie信息并將cookie存儲(chǔ)到文件中。filename是存儲(chǔ)cookie的文件名。delayload為T(mén)rue時(shí)支持延遲訪問(wèn)訪問(wèn)文件,即只有在需要時(shí)才讀取文件或在文件中存儲(chǔ)數(shù)據(jù)。

MozillaCookieJar:從FileCookieJar派生而來(lái),創(chuàng)建與Mozilla瀏覽器 cookies.txt兼容的FileCookieJar實(shí)例。

LWPCookieJar:從FileCookieJar派生而來(lái),創(chuàng)建與libwww-perl標(biāo)準(zhǔn)的 Set-Cookie3 文件格式兼容的FileCookieJar實(shí)例。

-- coding: utf-8 --

@File : cookiejar_demo.py

@Date : 2018-07-24

@Author : Peng Shiyu

from http import cookiejar
from urllib import request
import ssl

def get_cookie():
# 創(chuàng)建cookiejar實(shí)例對(duì)象
cookie = cookiejar.CookieJar()
print(cookie)
# <CookieJar[]>

# 創(chuàng)建管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()

# 創(chuàng)建請(qǐng)求求管理器
opener = request.build_opener(cookie_handler, http_handler, https_handler)

# 發(fā)起請(qǐng)求
url = "https://www.baidu.com"
req = request.Request(url)
response = opener.open(req)

# 查看請(qǐng)求結(jié)果
print(response.reason)  # OK
print(cookie)
"""
<CookieJar[
    <Cookie BIDUPSID=B681378758CB3586029EBFFFF16FBDE2 for .baidu.com/>, 
    <Cookie PSTM=1532404690 for .baidu.com/>, 
    <Cookie BD_NOT_HTTPS=1 for www.baidu.com/>
]>
"""

保存cookie到文件
def save_cookie():
# 創(chuàng)建cookiejar實(shí)例對(duì)象
cookie = cookiejar.MozillaCookieJar("cookie.txt")
print(cookie)
# <MozillaCookieJar[]>

# 創(chuàng)建管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()

# 創(chuàng)建請(qǐng)求求管理器
opener = request.build_opener(cookie_handler, http_handler, https_handler)

url = "https://www.baidu.com"
req = request.Request(url)

# 發(fā)起請(qǐng)求
response = opener.open(req)

# 查看請(qǐng)求結(jié)果
print(response.reason)  # OK
cookie.save()

從文件讀取cookie

def load_cookie():
# 創(chuàng)建cookiejar實(shí)例對(duì)象
cookie = cookiejar.MozillaCookieJar()
cookie.load("httpbin-cookie.txt")
print(cookie)
# <MozillaCookieJar[<Cookie password=123456 for .httpbin.org/>, <Cookie username=pengshiyu for .httpbin.org/>]>

# 創(chuàng)建管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()

# 創(chuàng)建請(qǐng)求求管理器
opener = request.build_opener(cookie_handler, http_handler, https_handler)

url = "http://www.httpbin.org/cookies"
req = request.Request(url)

# 發(fā)起請(qǐng)求
response = opener.open(req)

# 查看請(qǐng)求結(jié)果
print(response.reason)  # OK
print(response.read())
# b'{"cookies":{"password":"123456","username":"pengshiyu"}}\n'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容