很多用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. python opencv 投影变换 黑边
  2. 阿里开源那个牛哄哄问题排查工具竟然不会用?最佳实践来了!
  3. [html] 如何动态修改`<title>`的标题名称?
  4. springboot导包显示不存在_(一)SpringBoot搭建基本后端应用
  5. There is no Action mapped for namespace / and action name accredit.
  6. 初识Spring Boot
  7. JAVA 正则表达式4种常用的功能
  8. #SQL1242错误
  9. Ci522/CI523替代RC522手机NFC开锁方案13.56Mhz读写器芯片
  10. MapGIS 6.7 数字非标准分幅影像校正方法
  11. ubutnu下panel消失
  12. 分步:配置 IPAM 以管理 IP 地址空间
  13. SQL查询表结构相同的两张表中数据的差异
  14. 网址出现dns_probe_finished_no_internet
  15. PS更新升级Adobe Camera Raw(ACR)15.3
  16. 隧道保活超时或协商超时_丰巢快递柜超时收费的法律分析
  17. Android获取SDcard目录及创建文件夹;
  18. 我的2013----IT女的一年经历
  19. RSI指标各种买卖信号公式源码分享
  20. 有关计算机的课外阅读书籍,关于2020级本科生《认识实习》课外阅读书目的通知...

热门文章

  1. python的逆袭之路_Python领域最伟大工程师Kenneth Reitz的逆袭之路
  2. 圣诞节,程序员应该给女朋友送一个线上圣诞树
  3. mysql 存储过程 记录是否存在_如何检查MySQL中是否存在存储过程?
  4. android音乐播放器音乐加载,Android开源音乐播放器之在线音乐列表自动加载更多...
  5. VSCode设置ESLint语法检查
  6. css3帮你轻松实现圆角效果,不一样的前端页面。
  7. vue-router 响应路由参数的变化
  8. 【HTML】前端性能优化之CDN和WPO的比较
  9. bootstrap的栅格系统和响应式工具
  10. [ZJJOI2013]K大数查询 整体二分