前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 capybaranikogiri,使开发人员更容易理解如何使用该框架。它支持与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的,所以作为开发者,您必须熟悉底层编程语言。它们都是开源或免费的,所以尝试一下,看哪种适合您的业务。

类似文章