推荐一款小众且好用的 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 引导插件列表.你会发现这些插件对于提高你的网站的整体用户体 ...
随机推荐
- codeforces 8B
B. Obsession with Robots time limit per test 2 seconds memory limit per test 64 megabytes input stan ...
- Ubuntu-16.04下Docker通过阿里云镜像安装(apt-get)
由于通过官方路径安装docker时总是连接不上,所以从网上找了半天,通过阿里云镜像安装docker,我的Linux是ubuntu-16.04 一.配置源里的阿里云镜像仓库 sudo vim /etc/ ...
- matplotlib 图标显示中文
matplotlib 显示中文 Method_1: # 添上: plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcPara ...
- TypeScript Generics All In one
TypeScript Generics All In one TypeScript 泛型 代码逻辑复用 扩展性 设计模式 方法覆写, 直接覆盖 方法重载,参数个数或参数类型不同 test " ...
- webfullstack website
webfullstack website refs https://www.lanqiao.cn/paths/ xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许 ...
- MongoDB 101
MongoDB 101 Studio 3T https://studio3t.com/academy/ https://studio3t.com/academy/lessons/introducing ...
- CSS3 & gradient & color & background
CSS3 & gradient & color & background css background https://developer.mozilla.org/en-US/ ...
- NGK公链全面服务旅游经济
有数据显示,2019 年全球旅游总收入已达 6.5万亿美元, 占全球 GDP 的 7.3%,旅游业发展所创造的收益,于全球经济的重要性,不言而喻. 在旅游产业蓬勃发展的同时,中心化运营模式下却仍存在痛 ...
- JULLIAN MURPHY:拥有良好的心态,运气福气便会自来
JULLIAN MURPHY是星盟全球投资公司的基金预审经理,负责星盟投资项目预审,有着资深的基金管理经验,并且在区块链应用的兴起中投资了多个应用区块链技术的公司. JULLIAN MURPHY认为往 ...
- redis和mysql结合数据一致性方案
缓存读: 缓存由于高并发高性能,已经被广泛的应用.在读取缓存方面做法一致.流程如下: 写缓存: 1.先更新数据库,再更新缓存 2.先更新数据库,再删除缓存. (1).先更新数据库,再更新缓存 这套方案 ...