http.cookiejar模块

该模块主要的类有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

  1. CookieJar:管理HTTP cookie的值,存储cookie,向传出的HTTP请求添加cookie的对象。整个cookie都存在内存中,对cookie实例进行垃圾回收后,cookie也将丢失。
  2. FileCookieJar(filename,delayload=None,policy=None):从CookieJar派生而来,将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时,支持延迟访问访问文件,即只有在需要时才读取文件中存储的数据。
  3. MozillaCookieJar(filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与Mozilla浏览器cookies.txt兼容的FileCookieJar实例。
  4. LWPCookieJar(filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与libwww-per标准的Set-Cookie3文件格式兼容的FileCookieJar实例。

HTTPCookieProcessor 创建一个handler,通过handler去build一个opener。

from urllib import request
from http.cookiejar import CookieJar
from urllib import parse

# 大鹏主页 http://www.renren.com/880151247/profile
# 人人网登陆url http://renren.com/

dapeng_url = "http://www.renren.com/880151247/profile"
login_url = "http://renren.com/PLogin.do"

# 1登陆
# 1.1 创建一个cookiejar对象
cookiejar = CookieJar()
# 1.2 使用cookiejar创建一个HTTPCookieProcess对象
handler = request.HTTPCookieProcessor(cookiejar)
# 1.3 使用上一步创建的handler创建一个opener
opener = request.build_opener(handler)
# 1.4 使用opener发送登陆的请求(邮箱和密码)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x6"
                  "4) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/80.0.3987.149 Safari/537.36"
}
data = {
    "email": "132222222@qq.com",
    "password": "12222222"
}
req = request.Request(login_url, data=parse.urlencode(data).encode("utf-8"), headers=headers)
# urlencode返回一个unicode数据类型,data需要一个bytes数据类型
opener.open(req)
# 这一步只是用来登陆,不需要读取响应
# 2.访问个人主页
#  获取页面时,不要新建opener,因为之前的opener已经包含了cookie信息
req_c = request.Request(dapeng_url, headers=headers)
resp = opener.open(req)
with open("dapengrere.html", "w",encoding="utf-8") as fp:
    fp.write(resp.read().decode("utf-8"))

保存cookie到本地
使用cookiejar的save方法,需要指定一个文件名。

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

resp = opener.open("http://www.baidu.com")
# 如果没指定文件名,save这里指定
cookiejar.save()
from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

resp = opener.open("http://httpbin.org/cookies/set?course=aaa")
# 保存过期cookie信息
cookiejar.save(ignore_discard=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值