很多用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('

(.*?)', html, flags=re.DOTALL)[0].strip()

下面是未登录状况下下载得到的标题:>>> import urllib2>>> url = ' >>> 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。

下面是使用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

目前该模块测试过的浏览器版本还不是很多,你使用过程中可能会遇到问题,可以向作者提交问题:

https://bitbucket.org/richardpenman/browsercookie/

python打开浏览器后带cookie_Python爬虫使用浏览器的cookies:browsercookie相关推荐

  1. python获取登录后的cookie_python爬虫使用cookie登录详解

    前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...

  2. python如何使用session和cookie_Python爬虫番外篇之Cookie和Session-阿里云开发者社区

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...

  3. python打开谷歌浏览器 关键字_高效使用Chrome浏览器

    最近在学一门网上课程<高效上网,超强搜索>,第一部分主要是在介绍Chrome浏览器的高级使用方法,对平时提高上网及工作效率特别有用,因此整理一下其中对自己比较有用的内容,作为第一篇博客.主 ...

  4. Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。

    正常的话我们启用的 chrome 浏览器是不带插件的,如果你能登陆 chrome 的话,你会发现登陆信息也没有,还有不管你怎样设置每次新打开的 chrome 都是默认设置的. 我们正常启动的浏览器每次 ...

  5. python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...

    公司归档文件比较麻烦,于是用Python写了个程序自动归档,运行无错误.但是运行完后问题就来了,自己手动打开word文档时速度变得奇慢,打开一个文档需要1~2min,请各位同仁帮我看看.下为源代码 # ...

  6. python打开网页被禁止_Python爬虫被禁?看看是不是这几个问题

    Python爬虫在网上完成网站的信息采集时,常常出现无缘无故的ip被禁的情况,正爬取呢就没法继续了,造成日常业务也没办法正常进行了,整个人都不好了呢.一部分人完全不清楚被禁的原因,这么简单的就给禁掉了 ...

  7. python打开setting_Django自带日志 settings.py文件配置方法

    Django settings.py文件配置部分: # logging配置 log_file = '/home/nagain/learn/log' log_file_path = os.path.jo ...

  8. python登录网页后打印_python爬虫中文网页cmd打印出错问题解决

    问题描述 用python写爬虫,很多时候我们会先在cmd下先进行尝试. 运行爬虫之后,肯定的,我们想看看爬取的结果. 于是,我们print... 运气好的话,一切顺利.但这样的次数不多,更多地,我们会 ...

  9. python伪装浏览器什么意思_python爬虫伪装浏览器出现问题求助

    运行报错:: 'str' object has no attribute 'items' #-*-coding:utf-8 -*- import urllib.request def saveFile ...

最新文章

  1. Kubenetes — YAML 基本语法
  2. 网管日志-06.09.08
  3. SimpleTemplate模板引擎开发
  4. poj3683 Priest John's Busiest Day
  5. windows2000 日志
  6. 信息学奥赛一本通(2044:【例5.12】回文字串)
  7. shrio 权限管理filterChainDefinitions过滤器配置(转)
  8. Spring4.0编程式定时任务配置
  9. MySQL循环结构例题_Mysql:循环结构
  10. 视觉中国被连夜约谈后再次致歉;京东高管:下一步将向总监“开刀”;华为P30价格公布 | 雷锋早报...
  11. shell一周学习心得
  12. jfreechart火速应用
  13. matlab电气应用,基于MATLAB/Simulink的高压直流输电系统的仿真研究.pdf
  14. 面试中最常见的10个经典问题,答对了通过率提高50%,快来抄答案!
  15. Python版按键精灵基础代码
  16. windows7软件显示问号乱码问题
  17. 不同的声音-我为什么反对用Node
  18. P,AP, MAP,MRR。几种分类器评价指标
  19. 美国Disqus、国内JiaThis、友言、评论啦、搜狐畅言 评论系统(第三方评论系统)
  20. 为什么我的MATLAB激活成功后打开还是激活界面!

热门文章

  1. 少儿编程150讲轻松学Scratch(十二)-Scratch编程算法练习-选择排序
  2. dd命令iso linux_BootISO:从 ISO 文件中创建一个可启动的 USB 设备
  3. 物理服务器备份系统,物理备份和逻辑备份区别
  4. mysql+yes数据类型,怎样修改mysql列的数据类型?
  5. sql双表查询java代码_原生sql 多表查询
  6. html中scope的作用,AngularJS 作用域(Scope)
  7. 聊聊一直困扰前端程序员的浏览器兼容-【css】
  8. 牛客NOIP暑期七天营-提高组1
  9. 如何安装 Angular CLI 并且检查 CLI 的版本
  10. 23种计模式之Python实现(史上最全最通俗易懂)内容整改中