Python爬虫连载6-cookie深入使用实例化实现自动登录

一、使用cookie登录
1.直接把cookie复制下去,然后手动放到请求头
2.http模块包含一些关于cookie的模块,通过他们我们可以自动使用cookie
(1)cookieJar
管理存储cookie,向传出的http请求添加cookie;cookie存储在内存中,CookieJar实例回收后cookie将消失;
(2)FileCookieJar(filename,delayload=None,policy=Nnone)
使用文件管理cookie;filename是保存cookie的文件
filename是保存cookie的文件
(3)MozillaCookieJar(filename,delayload=None,policy=None)
创建于mocilla浏览器cookie,txt兼容的FileCookieJar实例
(4)LwpCookieJar(filename,delayload-None,policy=None)
创建与libww-perl标准兼容的FileCookieJar实例
(5)他们的关系是:CookieJar–>FileCookirJar–>MozillaCookieJar & LwpCookieJa
3.利用cookiejar访问人人网
自动使用cookie登录,大致流程为:(1)打开登陆页面后自动通过用户名密码登录;(2)自动提取反馈回来的cookie;(3)利用提取的cookie登录隐私页面;
4.handler是Handler的实例,常用参看案例代码
(1)用来处理复杂请求

#生成cookie的管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
#创建http请求管理器
http_handler = request.HTTPHandler()
#生成https管理器
https_handler = request.HTTPHandler()

(2)创立handler后,使用opener打开,打开后相应的业务由相应的handler处理
(3)cookie作为一个变量,打印出来
cookie的属性:
name:名称 value:值 domain:可以访问此cookie的域名 expires:过期时间 size:大小 Http字段

from urllib import request,parse
from http import cookiejar
#创建cookiejar实例
cookie = cookiejar.CookieJar()
#生成cookie的管理器
cookie_handler = request.HTTPCookieProcessor(cookie)
#创建http请求管理器
http_handler = request.HTTPHandler()
#生成https管理器
https_handler = request.HTTPHandler()
#创建请求管理器
opener = request.build_opener(http_handler,https_handler,cookie_handler)

def login():
    """
    负责初次登录
    需要输入用户名密码
    :return:
    """
    url = "http://www.renren.com/PLogin.do"
    data = {
        "email":"1215217867@qq.com",
        "password":"481648541615485"
    }
    #把数据进行编码
    data = parse.urlencode(data)
    #创建一个请求对象
    req = request.Request(url,data=data.encode())
    #使用opener发起请求
    rep = opener.open(req)

def getHomePage():
    url = "http://www.renren.com/965187997/profile"
    #如果已经执行了login函数,则opener自动已经包含相应的cookie值
    rsp = opener.open(url)

    html = rsp.read().decode()
    with open("rsp.html","w") as f:
        f.write(html)


if __name__ == "__main__":
    """
    执行完login之后,会得到授权之后的cookie
    我们尝试把cookie打印出来
    """
    login()
    print(cookie)
    for item in cookie:
        print(type(item))
        print(item)
        for i in dir(item):
            print(i)
    getHomePage()

6.1
6.2

二、源码
Reptitle6_CookieJar.py
https://github.com/ruigege66/PythonReptile/blob/master/Reptitle6_CookieJar.py
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
6.3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值