前11个免费的网络抓取框架
在过去的几年里,网络爬虫领域取得了显著的进展。
网络爬虫被用作收集和分析网络数据的手段。为了支持这个过程,出现了许多框架,以满足不同用例的不同需求。
让我们来看看一些流行的网络爬虫框架。
以下是自托管的解决方案,所以您需要自行安装和配置。您可以查看这篇帖子了解云爬取解决方案。
scrapy
scrapy是一个基于python的协作框架。它提供了一个完整的库套件。这是一个完全异步的框架,可以接受请求并更快地处理它们。
scrapy的一些优点包括:
- 性能超快
- 内存使用最佳
- 与django框架非常相似
- 比较算法高效
- 易于使用的功能,支持详尽的选择器
- 通过添加自定义中间件或管道以实现自定义功能的可定制框架
- 可移植
- 提供云环境,可运行资源密集型操作
如果您真的想学习scrapy,那么我建议您参考这个课程。
mechanicalsoup
mechanicalsoup可以模拟人类在网页上的行为。它基于一个网页解析库beautifulsoup,在处理简单网站时效率最高。
优点
- 简洁的库,代码开销很小
- 在解析较简单的页面时速度非常快
- 能够模拟人类行为
- 支持css和xpath选择器
mechanicalsoup在尝试模拟人类动作时非常有用,例如等待某个事件或点击某个项以打开弹出窗口,而不仅仅是抓取数据。
jaunt
jaunt提供自动化抓取、基于json的数据查询和无头超轻量级浏览器等功能。它支持跟踪每个执行的http请求/响应。
使用jaunt的显著优点包括:
- 有组织的框架,满足您的所有网络爬取需求
- 允许从网页中以json格式查询数据
- 支持通过表单和表格进行爬取
- 允许控制http请求和响应
- 与rest api轻松接口
- 支持http/https代理
- 支持在html dom导航中进行搜索链式、基于正则表达式的搜索和基本身份验证
需要注意的一点是,jaunt的浏览器api不支持基于javascript的网站。这个问题可以通过使用下面要讨论的jauntium来解决。
jauntium
jauntium是jaunt框架的增强版本。它不仅解决了jaunt的缺点,还增加了更多功能。
- 能够创建通过页面并根据需要执行事件的web机器人
- 轻松搜索和操作dom
- 通过利用其网络爬取功能编写测试用例
- 支持与selenium集成以简化前端测试
- 支持与jaunt框架相比,jauntium支持基于javascript的网站
适用于需要自动化一些流程并在不同浏览器上进行测试的情况。
storm crawler
storm crawler是一个完整的基于java的网络爬虫框架。它用于构建可扩展和优化的java网络爬取解决方案。storm crawler主要用于提供流式输入,其中url被发送到流中进行爬取。
优点
- 可扩展性强,可用于大规模递归调用
- 具有弹性
- 出色的线程管理,减少爬取的延迟
- 易于通过附加库扩展库
- 提供的网络爬取算法相对更高效
norconex
norconex http收集器允许您构建企业级爬虫。它是一个可以在许多平台上运行的编译二进制文件。
优点
- 可以在普通服务器上爬取数百万个页面
- 能够爬取pdf、word和html格式的文档
- 能够直接从文档中提取数据并进行处理
- 支持ocr从图像中提取文本数据
- 能够检测内容的语言
- 可以配置爬取速度
- 可以设置为重复运行在页面上,以持续比较和更新数据
norconex可以与java集成,也可以通过bash命令行运行。
apify
apify sdk是一个基于js的爬取框架,与上面讨论的scrapy相似。它是最好的基于javascript构建的网络爬取库之一。虽然它可能没有python框架强大,但它相对较轻量且更容易编码。
优点
- 内置支持cheerio、puppeteer和其他js插件
- 具有autoscaled池,允许同时开始爬取多个网页
- 快速爬取内部链接并根据需要提取数据
- 更简单的编码爬虫库
- 可以以json、csv、xml、excel和html的形式导出数据
- 运行在无头chrome上,支持所有类型的网站
kimurai
kimurai是用ruby编写的,基于流行的ruby gem capybara和nikogiri,使开发人员更容易理解如何使用该框架。它支持与headless chrome浏览器、phantom js以及简单的http请求的轻松集成。
优点
- 可以在单个进程中运行多个蜘蛛
- 支持capybara gem的所有事件
- 在javascript执行达到限制时自动重新启动浏览器
- 自动处理请求错误
- 可以利用处理器的多个核心和简单方法进行并行处理
colly
colly是一款平滑、快速、优雅且易于使用的框架,即使对于网络爬取领域的初学者也很适用。colly允许您根据需要编写任何类型的爬虫和蜘蛛。它在数据结构化的情况下尤为重要。
优势
- 每秒能处理超过1000个请求
- 支持自动会话处理和cookies
- 支持同步、异步和并行爬取
- 在重复爬取时支持缓存以提高速度
- 理解robots.txt并防止爬取任何不需要的页面
- 开箱即用支持google app engine
colly非常适合数据分析和挖掘应用需求。
grablab
grablab具有高度可扩展性。您可以使用它来构建简单的网页抓取脚本,也可以构建复杂的异步处理脚本来爬取数百万个页面。
优势
- 高度可扩展
- 支持并行和异步处理,同时爬取数百万个页面
- 简单易用,但功能强大,可以编写复杂的任务
- 支持api爬取
- 支持为每个请求构建蜘蛛
grablib内置了处理来自请求的响应的支持。因此,它也允许通过web服务进行抓取。
beautifulsoup
beautifulsoup是一个基于python的网页抓取库。它主要用于html和xml网页抓取。beautifulsoup通常在其他需要更好的搜索和索引算法的框架之上使用,例如上面介绍的scrapy框架。
beautifulsoup的优势包括:
- 支持解析损坏的xml和html
- 比大多数可用于此目的的解析器更高效
- 易于与其他框架集成
- 占用空间小,轻量级
- 带有预构建的过滤和搜索功能
如果有兴趣学习beautifulsoap,请查看这个在线课程。
结论
正如您可能已经注意到的,它们都是基于python或nodejs的,所以作为开发者,您必须熟悉底层编程语言。它们都是开源或免费的,所以尝试一下,看哪种适合您的业务。