爬虫基本库的使用(2)

Cookie

Cookie:指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据。
cookie的格式:
Set-Cookie:NAME=VALUE;Expires/Max-age=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
参数的含义:

  1. NAME:cookie的名字
  2. VALUE:cookie的值
  3. Expires:cookie的过期时间
  4. Path:cookie作用的路径
  5. Domain:cookie作用的域名
  6. SECURE:是否只在https协议下起作用。

模拟登录

知乎模拟登录

直接在头部加入cookie信息

from urllib import request
url='https://www.zhihu.com/hot'
headers={'user-agent': '',
         'cookie':''}

rq=request.Request(url,headers=headers)

resp=request.urlopen(rq)

print(resp.read().decode('utf-8'))

美食杰模拟登录

http.cookiejar模块

该模块主要的类有:CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar.
这四个类的作用分别如下:

  1. CookieJar:管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie对象。整个cookie 都存储在内存中,对CookieJar实列进行垃圾回收后cookie也将丢失。
  2. FileCookieJar(filename,delayload=None,policy=None):从CookieJar派生而来,用来创建FileCookieJar实列,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为Ture时支持延迟访问文件,即只有在需要时才读取文件或在文件中存储数据。
  3. MozillaCookieJar(filename,delayload=None,policy=None):从filecookieJar派生而来,创建与Mozilla浏览器cookies.txt兼容的filecookieJar实列。
  4. LWPCookieJar(filename,delayload=None,policy=None):从filecookiejar派生而来,创建与libwww-perl标准的Set-Cookie3文件格式兼容的filecookiejar实列
#大家需要自己注册账号测试
#填入自己主页的url
from urllib import request
from urllib import parse
from http.cookiejar import CookieJar

#登录:https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F
#个人主页:

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

#登录
#1创建cookiejar对象
cookiejar=CookieJar()
#2创建HTTPCookieProcess对象
handler=request.HTTPCookieProcessor(cookiejar)
#3使用handler创建一个opener
opener=request.build_opener(handler)
#4使用opener发送登录请求(账户和密码)
post_url='https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F'
post_data=parse.urlencode({'username':'',
    'password':''})
req=request.Request(post_url,data=post_data.encode('utf-8'))
opener.open(req)

#访问个人网页
url=''
rq=request.Request(url,headers=headers)
resp=opener.open(rq)
print(resp.read().decode('utf-8'))

Cookie的保存与加载

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('https://www.baidu.com')
# cookiejar.save(ignore_discard=True,ignore_expires=True)

#ignore_discard=True 即使cookie即将过期也要保存下来
#ignore_expires=True 如果cookie已经过期也将它保存下来并且文件已经存在时将覆盖

#加载
cookiejar=MozillaCookieJar('cookie.txt')
cookiejar.load()
handler=request.HTTPCookieProcessor(cookiejar)
opener=request.build_opener(handler)
resp=opener.open('https://www.baidu.com')
for cookie in cookiejar:
    print(cookie)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值