python编程知识

Python编程:cookiejar的使用

2018-12-03  本文已影响18人  FlyXhc

CookieJar类的子类:

CookieJar:管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。

FileCookieJar:从CookieJar派生而来,用来创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。

MozillaCookieJar:从FileCookieJar派生而来,创建与Mozilla浏览器 cookies.txt兼容的FileCookieJar实例。

LWPCookieJar:从FileCookieJar派生而来,创建与libwww-perl标准的 Set-Cookie3 文件格式兼容的FileCookieJar实例。

-- 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():
# 创建cookiejar实例对象
cookie = cookiejar.CookieJar()
print(cookie)
# <CookieJar[]>

# 创建管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()

# 创建请求求管理器
opener = request.build_opener(cookie_handler, http_handler, https_handler)

# 发起请求
url = "https://www.baidu.com"
req = request.Request(url)
response = opener.open(req)

# 查看请求结果
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():
# 创建cookiejar实例对象
cookie = cookiejar.MozillaCookieJar("cookie.txt")
print(cookie)
# <MozillaCookieJar[]>

# 创建管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()

# 创建请求求管理器
opener = request.build_opener(cookie_handler, http_handler, https_handler)

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

# 发起请求
response = opener.open(req)

# 查看请求结果
print(response.reason)  # OK
cookie.save()

从文件读取cookie

def load_cookie():
# 创建cookiejar实例对象
cookie = cookiejar.MozillaCookieJar()
cookie.load("httpbin-cookie.txt")
print(cookie)
# <MozillaCookieJar[<Cookie password=123456 for .httpbin.org/>, <Cookie username=pengshiyu for .httpbin.org/>]>

# 创建管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()

# 创建请求求管理器
opener = request.build_opener(cookie_handler, http_handler, https_handler)

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

# 发起请求
response = opener.open(req)

# 查看请求结果
print(response.reason)  # OK
print(response.read())
# b'{"cookies":{"password":"123456","username":"pengshiyu"}}\n'
上一篇 下一篇

猜你喜欢

热点阅读