推荐一款小众且好用的 Python 爬虫库 - RoboBrowser
1. 前言
大家好,我是安果!
今天推荐一款小众轻量级的爬虫库:RoboBrowser
RoboBrowser,Your friendly neighborhood web scraper!由纯 Python 编写,运行无需独立的浏览器,它不仅可以做爬虫,还可以实现 Web 端的自动化
项目地址:
https://github.com/jmcarp/robobrowser
2. 安装及用法
在实战之前,我们先安装依赖库及解析器
PS:官方推荐的解析器是 「lxml」
# 安装依赖
pip3 install robobrowser
# lxml解析器(官方推荐)
pip3 install lxml
RoboBrowser 常见的 2 个功能为:
模拟表单 Form 提交
网页数据爬取
使用 RoboBrowser 进行网页数据爬取,常见的 3 个方法如下:
find
查询当前页面满足条件的第一个元素
find_all
查询当前页面拥有共同属性的一个列表元素
select
通过 CSS 选择器,查询页面,返回一个元素列表
需要指出的是,RoboBrowser 依赖于 BS4,所以它的使用方法和 BS4 类似
更多功能可以参考:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
3. 实战一下
我们以「 百度搜索及爬取搜索结果列表 」为例
3-1 打开目标网站
首先,我们实例化一个 RoboBrowser 对象
from time import sleep
from robobrowser import RoboBrowser
home_url = 'https://baidu.com'
# parser: 解析器,HTML parser; used by BeautifulSoup
# 官方推荐:lxml
rb = RoboBrowser(history=True, parser='lxml')
# 打开目标网站
rb.open(home_url)
然后,使用 RoboBrowser 实例对象中的 open() 方法打开目标网站
3-2 自动化表单提交
首先,使用 RoboBrowser 实例对象获取网页中的表单 Form
然后,通过为表单中的输入框赋值模拟输入操作
最后,使用 submit_form() 方法进行表单提交,模拟一次搜索操作
# 获取表单对象
bd_form = rb.get_form()
print(bd_form)
bd_form['wd'].value = "AirPython"
# 提交表单,模拟一次搜索
rb.submit_form(bd_form)
3-3 数据爬取
分析搜索页面的网页结构,利用 RoboBrowser 中的 select() 方法匹配出所有的搜索列表元素
遍历搜索列表元素,使用 find() 方法查询出每一项的标题及 href 链接地址
# 查看结果
result_elements = rb.select(".result")
# 搜索结果
search_result = []
# 第一项的链接地址
first_href = ''
for index, element in enumerate(result_elements):
title = element.find("a").text
href = element.find("a")['href']
search_result.append(title)
if index == 0:
first_href = element.find("a")
print('第一项地址为:', href)
print(search_result)
最后,使用 RoboBrowser 中的 follow_link() 方法模拟一下「点击链接,查看网页详情」的操作
# 跳转到第一个链接
rb.follow_link(first_href)
# 获取历史
print(rb.url)
需要注意的是,follow_link() 方法的参数为带有 href 值的 a 标签
4. 最后
文中结合百度搜索实例,使用 RoboBrowser 完成了一次自动化及爬虫操作
相比 Selenium、Helium 等,RoboBrowser 更轻量级,不依赖独立的浏览器及驱动
如果想处理一些简单的爬虫或 Web 自动化,RoboBrowser 完全够用;但是面对一些复杂的自动化场景,更建议使用 Selenium、Pyppeteer、Helium 等
我已经将文中完整源码文件传到后台,关注公众号「 AirPython 」,后台回复「 rb 」即可获得
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
推荐一款小众且好用的 Python 爬虫库 - RoboBrowser的更多相关文章
- 推荐10款超级有趣的HTML5小游戏
HTML5的发展速度比任何人的都想像都要更快.更加强大有效的和专业的解决方案已经被开发......甚至在游戏世界中!这里跟大家分享有10款超级趣味的HTML5游戏,希望大家能够喜欢! Kern Typ ...
- 【转】推荐10款最热门jQuery UI框架
推荐10款最热门jQuery UI框架 原创 在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率.本文为你推荐10款非 ...
- 推荐一款Mac上好用的Markdown编辑器
[TOC] 推荐一款Mac上好用的Markdown编辑器 正文 我算是一位Evernote的重度用户吧.之前也尝试过为知笔记,有道云笔记,微软的onenote,最后还是觉的Evernote.因为我喜欢 ...
- 推荐几款我一直在用的chrome插件(上)
我用的chrome插件挺多的,所谓工欲善其事必先利其器,我热衷于搜寻好用的工具来让我平时的工作事半功倍.下面介绍几款我正在用的感觉还不错的插件,如果大家还有其它好用的(肯定有,chrome插件库太庞大 ...
- 推荐几款我一直在用的chrome插件(下)
请先看:推荐几款我一直在用的chrome插件(上) 6. Pocket 可以很方便的保存文章.视频等供以后查看,即实现了“Read it later”功能.有了 Pocket,您可以将所有想下次读的内 ...
- 墙裂推荐4款js网页烟花特效
以下是几款网页特效和一款软件: http://keleyi.com/keleyi/phtml/jstexiao/1.htm http://keleyi.com/keleyi/phtml/jstexi ...
- 再次推荐一款逼真的HTML5下雪效果
再次推荐一款逼真的下雪效果 效果图: 效果描述:之前推荐过一款下雪的jQuery插件之前的那款下降速度比较缓慢,今天推荐的这个下降速度比较快,大雪哇 使用方法:1.将index.html中的样式复制到 ...
- 【开发软件】推荐一款MAC OS X 下php集成开发环境mamp
这里给大家推荐一款在mac上搭建WEB服务器环境的集成环境安装软件,非常的好用,需要的朋友可以拿去,不用谢 ^_^ 之前苦于mac上搭建本地服务器之艰辛,找寻好久都没找到一款类似windows ...
- 推荐15款最佳的 jQuery 分步引导插件
当用户浏览到一个网站,它可能从不知道如何浏览,如何操作网站或 Web 应用程序的内容和流程.在这篇文章中,我们编制了一些最好的 jQuery 引导插件列表.你会发现这些插件对于提高你的网站的整体用户体 ...
随机推荐
- python yield && scrapy yield
title: python yield && scrapy yield date: 2020-03-17 16:00:00 categories: python tags: 语法 yi ...
- 杭电多校HDU 6599 I Love Palindrome String (回文树)题解
题意: 定义一个串为\(super\)回文串为: \(\bullet\) 串s为主串str的一个子串,即\(s = str_lstr_{l + 1} \cdots str_r\) \(\bullet\ ...
- Kafka 博文索引
博文索引 KafkaBroker 简析 KafkaConsumer 简析 KafkaProducer 简析 KafkaMirrorMaker 的不足以及一些改进 Kafka 简介 数据是系统的燃料,系 ...
- Laravel Homestead 安装 使用教程详解!
1 Laravel Homestead 1 安装: 1 下载: http://www.vagrantup.com/downloads.html 1 配置: 1 1 测试: 1 1 ********** ...
- PerformanceObserver API All In One
PerformanceObserver API All In One 性能监控 https://developer.mozilla.org/en-US/docs/Web/API/Performance ...
- CSS & Architecture
CSS & Architecture https://sass-guidelin.es/#architecture https://sass-guidelin.es/#the-7-1-patt ...
- 法兰西金融专访SPC空投重磅来袭
最近,法兰西金融日报联合德意志财经等知名金融媒体就SPC这一话题进行了专访. 法兰西金融日报记者德维尔斯问到,之前2020年的BGV项目等市场反响异常火爆,2021年已经来到,NGK目前有何新的大动作 ...
- Egg.js 是什么?
Egg.js 是什么? 阿里巴巴出 Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本. 注:Egg.js 缩写为 Egg 设 ...
- .Net Core 3.1浏览器后端服务(三) Swagger引入与应用
一.前言 前后端分离的软件开发方式已逐步成为互联网项目开发的业界标准,前后端分离带来了诸多好处的同时,也带来了一些弊端. 接口文档的维护就是其中之一,起初前后端约定文档规范,开发的很愉快,随着时间推移 ...
- vue中将分号去掉,将双引号变为单引号的配置
在项目根目录下创建.prettierrc文件,文件内容如下: { "semi": false, "singleQuote": true } 实现vs code中 ...