首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >爬虫之cookiejar模块

爬虫之cookiejar模块

作者头像
人生不如戏
发布2018-05-30 15:03:48
发布2018-05-30 15:03:48
4200
举报
文章被收录于专栏:抠抠空间抠抠空间

简介

有时候我们需要爬一些需要登录才能进入网页,这个时候就要用到cookie相关的一些模块来操作了

内置的http包里包含了cookie相关的一些模块,通过她们我们可以自动使用cookie

  • CookieJar
    • 管理储存cookie,像传出的http请求添加cookie
    • cookie存储在内存中,CookieJar示例回收后cookie将自动消失
  • FileCookieJar
    • 是CookieJar的字类
    • cookie保存在文件中
  • MozillaCookiejar
    • 是FileCookieJar的子类
    • 与moccilla浏览器兼容
  • LwpCookieJar
    • 是FileCookieJar的子类
    • 与libwww-perl标准兼容

案例

访问登录后的人人网主页

代码语言:javascript
复制
from urllib import request,parse
from http import cookiejar

# 创建cookiejar实例对象
cookie = cookiejar.CookieJar()

# 根据创建的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)


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__':
    '''
    依次执行上面两个函数
    '''
    login()
    getHomePage()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档