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 文件与目录操作
Dec 24 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
python基础while循环及if判断的实例讲解
Aug 25 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
python3+requests接口自动化session操作方法
Oct 13 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
jquery.ui.draggable中文文档
2009/11/24 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
JS实现4位随机验证码
2020/10/19 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
JSON Web Tokens的实现原理
2017/04/02 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
学生保证书格式
2015/02/27 职场文书
倡议书格式及范文
2015/04/29 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS