python打开浏览器后带cookie_Python爬虫使用浏览器的cookies:browsercookie
很多用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相关推荐
- python获取登录后的cookie_python爬虫使用cookie登录详解
前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...
- python如何使用session和cookie_Python爬虫番外篇之Cookie和Session-阿里云开发者社区
关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...
- python打开谷歌浏览器 关键字_高效使用Chrome浏览器
最近在学一门网上课程<高效上网,超强搜索>,第一部分主要是在介绍Chrome浏览器的高级使用方法,对平时提高上网及工作效率特别有用,因此整理一下其中对自己比较有用的内容,作为第一篇博客.主 ...
- Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。
正常的话我们启用的 chrome 浏览器是不带插件的,如果你能登陆 chrome 的话,你会发现登陆信息也没有,还有不管你怎样设置每次新打开的 chrome 都是默认设置的. 我们正常启动的浏览器每次 ...
- python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...
公司归档文件比较麻烦,于是用Python写了个程序自动归档,运行无错误.但是运行完后问题就来了,自己手动打开word文档时速度变得奇慢,打开一个文档需要1~2min,请各位同仁帮我看看.下为源代码 # ...
- python打开网页被禁止_Python爬虫被禁?看看是不是这几个问题
Python爬虫在网上完成网站的信息采集时,常常出现无缘无故的ip被禁的情况,正爬取呢就没法继续了,造成日常业务也没办法正常进行了,整个人都不好了呢.一部分人完全不清楚被禁的原因,这么简单的就给禁掉了 ...
- python打开setting_Django自带日志 settings.py文件配置方法
Django settings.py文件配置部分: # logging配置 log_file = '/home/nagain/learn/log' log_file_path = os.path.jo ...
- python登录网页后打印_python爬虫中文网页cmd打印出错问题解决
问题描述 用python写爬虫,很多时候我们会先在cmd下先进行尝试. 运行爬虫之后,肯定的,我们想看看爬取的结果. 于是,我们print... 运气好的话,一切顺利.但这样的次数不多,更多地,我们会 ...
- python伪装浏览器什么意思_python爬虫伪装浏览器出现问题求助
运行报错:: 'str' object has no attribute 'items' #-*-coding:utf-8 -*- import urllib.request def saveFile ...
最新文章
- python opencv 投影变换 黑边
- 阿里开源那个牛哄哄问题排查工具竟然不会用?最佳实践来了!
- [html] 如何动态修改`<title>`的标题名称?
- springboot导包显示不存在_(一)SpringBoot搭建基本后端应用
- There is no Action mapped for namespace / and action name accredit.
- 初识Spring Boot
- JAVA 正则表达式4种常用的功能
- #SQL1242错误
- Ci522/CI523替代RC522手机NFC开锁方案13.56Mhz读写器芯片
- MapGIS 6.7 数字非标准分幅影像校正方法
- ubutnu下panel消失
- 分步:配置 IPAM 以管理 IP 地址空间
- SQL查询表结构相同的两张表中数据的差异
- 网址出现dns_probe_finished_no_internet
- PS更新升级Adobe Camera Raw(ACR)15.3
- 隧道保活超时或协商超时_丰巢快递柜超时收费的法律分析
- Android获取SDcard目录及创建文件夹;
- 我的2013----IT女的一年经历
- RSI指标各种买卖信号公式源码分享
- 有关计算机的课外阅读书籍,关于2020级本科生《认识实习》课外阅读书目的通知...
热门文章
- python的逆袭之路_Python领域最伟大工程师Kenneth Reitz的逆袭之路
- 圣诞节,程序员应该给女朋友送一个线上圣诞树
- mysql 存储过程 记录是否存在_如何检查MySQL中是否存在存储过程?
- android音乐播放器音乐加载,Android开源音乐播放器之在线音乐列表自动加载更多...
- VSCode设置ESLint语法检查
- css3帮你轻松实现圆角效果,不一样的前端页面。
- vue-router 响应路由参数的变化
- 【HTML】前端性能优化之CDN和WPO的比较
- bootstrap的栅格系统和响应式工具
- [ZJJOI2013]K大数查询 整体二分