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 11 Python
Python描述器descriptor详解
Feb 03 Python
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
浅谈Python处理PDF的方法
Nov 10 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
Python谱减法语音降噪实例
Dec 18 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
Python 实现集合Set的示例
Dec 21 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
经验几则 推荐
2006/09/05 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Python下载懒人图库JavaScript特效
2015/05/28 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
详解python eval函数的妙用
2017/11/16 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python pillow模块使用方法详解
2019/08/30 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python破解同事的压缩包密码
2020/10/14 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
决定成败的关键——创业计划书
2014/01/24 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
推广普通话的宣传语
2015/07/13 职场文书
mysql 生成连续日期及变量赋值
2022/03/20 MySQL