zoukankan      html  css  js  c++  java
  • Python爬虫教程-14-爬虫使用filecookiejar保存cookie文件(人人网)

    Python爬虫教程-14-爬虫使用filecookiejar保存cookie文件(人人网)

    • 上一篇介绍了利用CookieJar访问人人网,本篇将使用filecookiejar将cookie以文件形式保存
    • 自动使用cookie登录,使用步骤:
      • 1.打开登录页面后,通过用户名密码登录
      • 2.自动提取反馈回来的cookie
      • 3.利用提取的cookie登录个人信息页面
      • 创建cookiejar实例
      • 生成cookie的管理器
      • 创建http请求管理器
      • 创建https请求的管理器
      • 创建请求管理器
      • 通过输入用户名和密码,获取cookie
    • 代码:
    # 创建cookiejar的实例
    cookie = cookiejar.CookieJar()
    # 常见cookie的管理器
    cookie_handler = request.HTTPCookieProcessor(cookie)
    # 创建http请求的管理器
    http_handler = request.HTTPHandler()
    
    # 生成https管理器
    https_handler = request.HTTPSHandler()
    
    # 创建请求管理器
    opener = request.build_opener(http_handler,https_handler,cookie_handler)
    

    创建handle后,使用opener打开,打开后相应的业务由相应的handle处理

    cookie作为一个变量打印出来

    # 使用cookiejar
    # cookie作为一个变量打印出来
    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.HTTPSHandler()
    
    # 创建请求管理器
    opener = request.build_opener(http_handler,https_handler,cookie_handler)
    
    def login():
        # 负责首次登录,输入用户名和密码,用来获取cookie
        url = 'http://www.renren.com/PLogin.do'
    
        id = input('请输入用户名:')
        pw = input('请输入密码:')
    
        data = {
            # 参数使用正确的用户名密码
            "email": id,
            "password": pw
        }
        # 把数据进行编码
        data = parse.urlencode(data)
        # 创建一个请求对象
        req = request.Request(url,data=data.encode('utf-8'))
        # 使用opener发起请求
        rsp = opener.open(req)
    
    # 以上代码就可以进一步获取cookie了,cookie在哪呢?cookie在opener里
    def getHomePage():
        # 地址是用在浏览器登录后的个人信息页地址
        url = "http://www.renren.com/967487029/profile"
    
        # 如果已经执行login函数,则opener自动已经包含cookie
        rsp = opener.open(url)
        html = rsp.read().decode()
    
        with open("rsp1.html", "w", encoding="utf-8")as f:
            # 将爬取的页面
            print(html)
            f.write(html)
    
    if __name__ == '__main__':
        login()
        # 执行完login之后,会得到授权之后的cookie,下一步打印出来
        print(cookie)
        for item in cookie:
            print(type(item))
            print(item)
            for i in dir(item):
                print(i)
    

    我们使用print(i)打印出来了cookie的所有属性
    这里写图片描述
    下面介绍常用的属性

    cookie的属性

    • name:名称
    • value:值
    • domain:可以访问此cookie的域名
    • path:可以访问此cookie的页面路径
    • expires:过期时间
    • size:大小
    • http:字段
    cookie的值虽然可以自己修改,但是修改后就会导致和服务器端数据不一致,而使cookie无效,最终登录失败

    cookie的保存-FileCookieJar

    
    # 使用filecookiejar
    from urllib import request,parse
    from http import cookiejar
    
    # 创建cookiejar的实例
    filename = "py15renrenCookie.txt"
    cookie = cookiejar.MozillaCookieJar(filename)
    # 常见cookie的管理器
    cookie_handler = request.HTTPCookieProcessor(cookie)
    # 创建http请求的管理器
    http_handler = request.HTTPHandler()
    
    # 生成https管理器
    https_handler = request.HTTPSHandler()
    
    # 创建请求管理器
    opener = request.build_opener(http_handler,https_handler,cookie_handler)
    
    def login():
        # 负责首次登录,输入用户名和密码,用来获取cookie
        url = 'http://www.renren.com/PLogin.do'
    
        id = input('请输入用户名:')
        pw = input('请输入密码:')
    
        data = {
            # 参数使用正确的用户名密码
            "email": id,
            "password": pw
        }
        # 把数据进行编码
        data = parse.urlencode(data)
        # 创建一个请求对象
        req = request.Request(url,data=data.encode('utf-8'))
        # 使用opener发起请求
        rsp = opener.open(req)
    
        '''
        保存cookie到文件
        两个参数:
            ignore_discard:表示及时cookie将要被丢弃,是否保存下来
            ignore_expires:表示如果该文件中cookie已经过期,是否保存下来
        '''
        cookie.save(ignore_discard=True, ignore_expires=True)
    
    if __name__ == '__main__':
    
        login()
    
    

    运行结果

    这里写图片描述
    本篇使用filecookiejar将cookie以文件形式保存

    更多文章链接:Python 爬虫随笔


    - 本笔记不允许任何个人和组织转载
  • 相关阅读:
    516. Longest Palindromic Subsequence最长的不连续回文串的长度
    java之spring之整合ssh-2
    java之spring之整合ssh
    java之spring之spring整合hibernate
    微服务之初了解(一)
    java之spring之scope和autowiring
    java之spring之依赖注入
    java之spring之对象的创建
    java之spring之配置讲解
    asp.net core 系列之静态文件
  • 原文地址:https://www.cnblogs.com/xpwi/p/9600781.html
Copyright © 2011-2022 走看看