爬虫之cookiejar模块
简介
有时候我们需要爬一些需要登录才能进入网页,这个时候就要用到cookie相关的一些模块来操作了
内置的http包里包含了cookie相关的一些模块,通过她们我们可以自动使用cookie
- CookieJar
- 管理储存cookie,像传出的http请求添加cookie
- cookie存储在内存中,CookieJar示例回收后cookie将自动消失
- FileCookieJar
- 是CookieJar的字类
- cookie保存在文件中
- MozillaCookiejar
- 是FileCookieJar的子类
- 与moccilla浏览器兼容
- LwpCookieJar
- 是FileCookieJar的子类
- 与libwww-perl标准兼容
案例
访问登录后的人人网主页
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()
爬虫之cookiejar模块的更多相关文章
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- Python爬虫之urllib模块2
Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...
- Python爬虫之urllib模块1
Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...
- asynicio模块以及爬虫应用asynicio模块(高性能爬虫)
一.背景知识 爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,只用一个线程且采用串行的方式执行,那只能等待爬取一个结束后才能继续下一个,效率会非常低. 需要强调的是 ...
- 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url
第三百二十六节,web爬虫,scrapy模块,解决重复url——自动递归url 一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 ...
- 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...
- 第三百二十四节,web爬虫,scrapy模块介绍与使用
第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...
- 第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装
第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装 当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip ...
- Python爬虫教程-09-error 模块
Python爬虫教程-09-error模块 今天的主角是error,爬取的时候,很容易出现错,所以我们要在代码里做一些,常见错误的处,关于urllib.error URLError URLError ...
随机推荐
- Python操作Word:常用对象介绍
前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...
- ubuntu server执行sudo出现"no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory"
[Ubuntu] 執行 sudo 時,出現 "no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory ...
- PHP——文件操作
自己写的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- 以下( )可用于检索session属性userid的值。
A.session. getAttribute (“userid”); B.session. setAttribute (“userid”); C.request. getParameter (“us ...
- EF报LINQ to Entities 不识别方法“Web_JZRepository.Models.copy_materials_details get_Item(Int32) ”,因此该方法无法转换为存储表达式。
说明用了如 List<T> list=new List<T>(); je.copy_materials_details.SingleOrDefault(x => x.ID ...
- shell脚本学习总结02--数组
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...
- 《C++ Primer Plus》学习笔记 2.1.3 C++预处理器和iostream文件
程序清单2-1 myfirst.cpp // myfirst.cpp -- displays a message #include <iostream> // a PREPROCESSOR ...
- python练习题集合-1
author:headsen chen date : 2018-05-31 17:59:04 notice:本文素材来自于:<< 笨方法学python >> 这本书,由本人 ...
- 《从零开始学Swift》学习笔记(Day 66)——Cocoa Touch设计模式及应用之通知机制
原创文章,欢迎转载.转载请注明:关东升的博客 通知(Notification)机制是基于观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是 MVC( 模型-视图 ...
- centos安装Oracle virtual box
1.进入virtualbox官网 https://www.virtualbox.org/wiki/Downloads 2.点击Linux distributions 3.向下翻至如图 4.在/etc/ ...