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实现数通设备端口使用情况监控实例
Jul 15 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python实现排序算法解析
Sep 08 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
学python最电脑配置有要求么
Jul 05 Python
Python绘制数码晶体管日期
Feb 19 Python
python unittest单元测试的步骤分析
Aug 02 Python
Python 的 sum() Pythonic 的求和方法详细
Oct 16 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生成文件
2007/01/15 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
网页常用特效代码整理
2006/06/23 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
python通过shutil实现快速文件复制的方法
2015/03/14 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Python 从相对路径下import的方法
2018/12/04 Python
Django时区详解
2019/07/24 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
Python自动创建Excel并获取内容
2020/09/16 Python
python各种excel写入方式的速度对比
2020/11/10 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
中医专业职业生涯规划书范文
2014/01/04 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS