写点什么

推荐一款小众且好用的 Python 爬虫库

用户头像
星安果
关注
发布于: 2021 年 03 月 11 日
推荐一款小众且好用的 Python 爬虫库

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# 官方推荐:lxmlrb = 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 标签


. 最后


文中结合百度搜索实例,使用 RoboBrowser 完成了一次自动化及爬虫操作


相比 Selenium、Helium 等,RoboBrowser 更轻量级,不依赖独立的浏览器及驱动


如果想处理一些简单的爬虫或 Web 自动化,RoboBrowser 完全够用;但是面对一些复杂的自动化场景,更建议使用 Selenium、Pyppeteer、Helium 等


我已经将文中完整源码文件传到后台,关注公众号「 AirPython 」,后台回复「 rb 」即可获得


如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!


发布于: 2021 年 03 月 11 日阅读数: 23
用户头像

星安果

关注

还未添加个人签名 2019.03.27 加入

公众号:AirPython,分享 Python 爬虫、自动化原创技术干货!

评论

发布
暂无评论
推荐一款小众且好用的 Python 爬虫库