Python爬虫使用浏览器cookies:browsercookie过程解析


Posted in Python onOctober 22, 2019

很多用Python的人可能都写过网络爬虫,自动化获取网络数据确实是一件令人愉悦的事情,而Python很好的帮助我们达到这种愉悦。然而,爬虫经常要碰到各种登录、验证的阻挠,让人灰心丧气(网站:天天碰到各种各样的爬虫抓我们网站,也很让人灰心丧气~)。爬虫和反爬虫就是一个猫和老鼠的游戏,道高一尺魔高一丈,两者反复纠缠。

由于http协议的无状态性,登录验证都是通过传递cookies来实现的。通过浏览器登录一次,登录信息的cookie是就会被浏览器保存下来。下次再打开该网站时,浏览器自动带上保存的cookies,只有cookies还未过期,对于网站来说你就还是登录状态的。

browsercookie模块就是这样一个从浏览器提取保存的cookies的工具。它是一个很有用的爬虫工具,通过加载你浏览器的cookies到一个cookiejar对象里面,让你轻松下载需要登录的网页内容。

安装

pip install browsercookie

在Windows系统中,内置的sqlite模块在加载FireFox数据库时会抛出错误。需要更新sqlite的版本:

pip install pysqlite

使用方法

下面是从网页提取标题的例子:

>>> import re
>>> get_title = lambda html: re.findall('<title>(.*?)</title>', html, flags=re.DOTALL)[0].strip()

下面是未登录状况下下载得到的标题:

>>> import urllib2
>>> url = 'https://bitbucket.org/'
>>> public_html = urllib2.urlopen(url).read()
>>> get_title(public_html)
'Git and Mercurial code management for teams'

接下来使用browsercookie从登录过Bitbucket的FireFox里面获取cookie再下载:

>>> import browsercookie
>>> cj = browsercookie.firefox()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> login_html = opener.open(url).read()
>>> get_title(login_html)
'richardpenman / home — Bitbucket'

上面是Python2的代码,再试试 Python3:

>>> import urllib.request
>>> public_html = urllib.request.urlopen(url).read()
>>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

你可以看到你的用户名出现在title里面了,说明browsercookie模块成功从FireFox加载了cookies。小编整理一套Python资料和PDF,有需要Python学习资料可以加学习群:631441315 ,反正闲着也是闲着呢,不如学点东西啦~~

下面是使用requests的例子,这次我们从Chrome里面加载cookies,当然你需要事先用Chrome登录Bitbucket:

>>> import requests
>>> cj = browsercookie.chrome()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)
'richardpenman / home — Bitbucket'

如果你不知道或不关心那个浏览器有你需要的cookies,你可以这样操作:

>>> cj = browsercookie.load()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)
'richardpenman / home — Bitbucket'

支持

目前,该模块支持以下平台:

Chrome: Linux, OSX, Windows

Firefox: Linux, OSX, Windows

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
python requests使用socks5的例子
Jul 25 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
使用python制作一个解压缩软件
Nov 13 Python
Python super()函数使用及多重继承
May 06 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
django学习之ajax post传参的2种格式实例
May 14 Python
Python异常模块traceback用法实例分析
Oct 22 #Python
Python多线程爬取豆瓣影评API接口
Oct 22 #Python
Python Process多进程实现过程
Oct 22 #Python
详解python中eval函数的作用
Oct 22 #Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 #Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 #Python
python文件读写代码实例
Oct 21 #Python
You might like
php读取msn上的用户信息类
2008/12/05 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
写的htc的数据表格
2007/01/20 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
初识Node.js
2015/03/20 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
iview的table组件自带的过滤器实现
2019/07/12 Javascript
利用Python爬取可用的代理IP
2016/08/18 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
django 将model转换为字典的方法示例
2018/10/16 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
进修护士自我鉴定
2013/10/14 职场文书
现金会计岗位职责
2013/12/05 职场文书
全民健身日活动方案
2014/01/29 职场文书
《石榴》教学反思
2014/03/02 职场文书
会计员岗位职责
2014/03/15 职场文书
鉴定评语大全
2014/05/05 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
社区工作者个人总结
2015/02/28 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
通讯稿格式及范文
2015/07/22 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
商务信函英语问候语
2015/11/10 职场文书