• 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()

    二、源码

    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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    WPF 使用Code创建Canvas,StackPanel,DockPanel。Grid,Border,UniformGrid,ViewBox,WrapPanel等
    myeclipse6.5安装maven2插件教程 (Maven+MyEclipse6.5)
    myeclipse使用maven教程
    【技术贴】如何汉化 myeclipse 中的svn插件
    【技术贴】小米利用Connectify共享无线网卡连接教程
    Myeclipse 自动生成 javadoc 教程
    MyEclipse6.5配置Tomcat7.x
    maven构建项目自动部署到tomcat中遇到的各种sb问题总结
    吐槽之程序猿
    html5 css3构造的漂亮表格
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12289556.html
Copyright © 2020-2023  润新知