Python网络爬虫(第二章:爬虫基本库的使用)- 使用CookJar模拟登录

Q: 什么是CookJar?

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

    2、CookieJar类有一些子类,分别是FileCookieJar,MozillaCookieJar,LWPCookieJar。

  •           FileCookieJar (filename,delayload=None,policy=None):从CookieJar派生而来,用来创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。
  •           MozillaCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与Mozilla浏览器 cookies.txt兼容的FileCookieJar实例。
  •           LWPCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与libwww-perl标准的 Set-Cookie3 文件格式兼容的FileCookieJar实例。

Q:如何实现?

A:示例代码如下:

# --coding:utf-8--
from urllib import request
from http.cookiejar import CookieJar
from urllib import parse

login_url = 'https://i.meishi.cc/login_t.php'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'
}

# 1. 登录
cookieJar = CookieJar()
handler = request.HTTPCookieProcessor(cookieJar)
opener = request.build_opener(handler)
post_data = parse.urlencode({'username': '账号', 'password': '密码'})
opener.open(login_url, data=post_data.encode('utf-8'))

# 2. 访问个人网页
person_url = 'https://i.meishi.cc/cook.php?id=14823414'
rq = request.Request(person_url, headers=headers)
resp = opener.open(rq)
print(resp.read().decode('utf-8'))

备注:parse.urlencode(data) :其中data是dict类型数据。将dict类型参数转化为query_string格式(key=value&key=value),并且将中文转码。

           encode('utf-8'):将query_string格式转换为bytes(字节流)类型。b'{"jsonrpc": "2.0", "method": "user.login"}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值