zoukankan      html  css  js  c++  java
  • 爬虫之FileCookieJar

    简介

    虽然CookieJar模块能够做到给请求设置cookie,但是它的cookie是保存在内存里的,每次用都需要重新设置,

    这就衍生了一个它的子类---FileCookieJar,它可以将cookie保存在文件中,然后直接使用就可了

    示例

    cookie的保存

    from urllib import request,parse
    from http import cookiejar
    
    # 创建filecookiejar实例对象
    # 它需要一个参数,既cookie保存的位置
    filename = 'cookie.txt'
    cookie = cookiejar.FileCookieJar(filename)
    
    # 根据创建的cookie生成cookie的管理器
    cookie_handle = request.HTTPCookieProcessor(cookie)
    
    # 创建http请求管理器
    http_handle = request.HTTPHandler()
    
    # 创建https管理器
    https_handle = request.HTTPSHandler()
    
    # 创建求求管理器,将上面3个管理器作为参数属性
    # 有了opener,就可以替代urlopen来获取请求了
    opener =  request.build_opener(cookie_handle,http_handle,https_handle)
    
    def login():
        '''
        负责初次登录
        需要传递用户名和密码,来获取登录的cookie凭证
        '''
        # 登录url,需要从登录form的action属性中获取
        url = 'http://www.renren.com/PLogin.do'
    
        # 登录所需要的数据,数据为字典形式,
        # 此键值需要从form扁担中对应的input的name属性中获取
        data = {
            'email':'136808069@qq.com',
            'password':'123456'
        }
    
        # 将数据解析成urlencode格式
        data = parse.urlencode(data)
    
        req = request.Request(url,data=data)
    
        # 正常是用request.urlopen(),这里用opener.open()发起请求
        response = opener.open(req)
    
        # 保存cookie文件
        cookie.save()
    
    
    
    if __name__ == '__main__':
        '''
        执行login函数
        '''
        login()
    

      

    cookie的调用

    from urllib import request,parse
    from http import cookiejar
    
    # 创建cookiejar实例对象
    cookie = cookiejar.FileCookieJar()
    
    # 读取已经保存的cookie文件
    # 读取之后,就无需登录,直接访问主页即可
    cookie.load('cookie.txt')
    
    # 根据创建的cookie生成cookie的管理器
    cookie_handle = request.HTTPCookieProcessor(cookie)
    
    # 创建http请求管理器
    http_handle = request.HTTPHandler()
    
    # 创建https管理器
    https_handle = request.HTTPSHandler()
    
    # 创建求求管理器,将上面3个管理器作为参数属性
    # 有了opener,就可以替代urlopen来获取请求了
    opener =  request.build_opener(cookie_handle,http_handle,https_handle)
    
    
    
    def getHomePage():
        '''
        获取登录后的页面
        '''
    
        # 此url是登录后的链接地址
        url = 'http://www.renren.com/965187997/profile'
    
        # 如果已经执行了上面的login函数,
        # 那么此时的opener已经是包含了cookie信息的一个opener对象
        res = opener.open(url)
    
        html = res.read().decode()
    
        with open('renren.html','w') as f:
            f.write(html)
    
    
    if __name__ == '__main__':
        getHomePage()
    

      

  • 相关阅读:
    浏览器开发者工具----F12 功能介绍
    python 爬虫之beautifulsoup(bs4)使用 --待完善
    python 爬虫之beautifulsoup(bs4)环境准备
    python dic字典使用
    python list的使用
    python 实现进制转换(二进制转十进制)
    字符串str的使用方法
    python 第一课 helloworld
    python 学习地址
    React中setState 什么时候是同步的,什么时候是异步的?
  • 原文地址:https://www.cnblogs.com/fu-yong/p/9032902.html
Copyright © 2011-2022 走看看