in

最佳网页抓取工具

最佳网页抓取工具

当你需要从网络上提取信息时,你将不可避免地遇到 “网页抓取 “这一术语。同时,你会发现有无数的服务和工具,它们希望在你的努力中帮助你。

面对如此庞大的数量,不幸的是,要快速找到适合自己使用情况的工具并做出正确的选择并不容易。这正是我们在今天的文章中想要探讨的问题。

我们将仔细研究数据抓取和数据提取领域的商业和开源工具,并详细说明它们的特点,以及你如何在你的特定使用情况下最好地使用它们。

内容指南 show

8种最好的网页抓取工具

  1. ScrapingBee
  2. ScrapeBox
  3. ScreamingFrog
  4. Scrapy
  5. pyspider
  6. Beautiful Soup
  7. Diffbot
  8. Common Crawl

网页抓取简介

网页抓取是关于从网站上收集内容。抓取器有许多形状和形式,抓取器收集内容的确切细节将有很大不同,取决于使用情况。

当然,一个非常常见的例子是搜索引擎。他们不断地抓取和爬行网络上新的和更新的内容,以包括在他们的搜索索引中。其他的例子包括。

  • 电子商务–比较不同在线网店的产品价格
  • 金融–监测股票和商品的表现
  • 工作机会– 从公司网站和招聘会上汇总公开的空缺职位

如何选择网页抓取的工具?

我们中的许多人喜欢玩Dart,但我们不一定要像这样挑选我们的抓取平台(或技术),对吗?

因此,在我们简单地跳入深渊之前,让我们为我们的抓取项目建立几个关键参数,这应该有助于我们缩小潜在抓取解决方案的清单。

抓取网络时要考虑什么?

  • 刮擦间隔– 你需要多长时间提取一次信息?它是一次性的吗?它应该按计划定期发生吗?一周一次?每一天?每小时?也许连续进行?
  • 数据输入–你要抓取什么样的数据?HTML、JSON、XML、二进制的东西,如DOCX–甚至可能是媒体,如视频、音频或图像?
  • 数据导出– 你希望如何接收数据?以原始格式?经过预处理,也许是分类或过滤,或者已经汇总了?你需要一个特定的输出格式,如CSV、JSON、XML,甚至可能是导入到数据库或API?
  • 数据量– 你要提取多少数据?是几个字节或几千字节,还是我们在谈论千兆和兆字节?
  • 刮取范围–你是只需要刮取几个预先设定的页面,还是需要刮取大部分或全部网站的内容?这一部分也可能决定你是否需要以及如何抓取网站的新链接。
  • 抓取权限–你怎么会发现额外的链接?该网站是否从一个中心页面(如网站地图)链接其所有的URL,或者是否有必要抓取整个页面?搜索引擎在寻找新页面方面可能有用吗(即网站:过滤器)?
  • 网站的复杂性–网站有多直截了当地进行抓取?你是要处理服务器组成的HTML文档,还是要处理更复杂的带有大量JavaScript交互的单页应用程序
  • 抓取障碍– 你想抓取的网站是否采用了任何安全层来阻止爬虫和抓取者?你是否需要解决验证码问题?你是否需要考虑到速率限制?你是否需要从一个特定的地点发送请求–或者甚至需要轮换网络?
  • 内部专家– 你要花多少精力来创建刮刀设置和维护它?你想在多大程度上涉足自定义应用程序代码?
  • 平台要求–一个抓取器与你的基础设施和工作流程的整合程度如何?它是否支持现有的操作系统?是否有你可能想使用的第三方服务和API的接口?

一旦你对你的要求有了更清楚的了解,就应该更容易将它们与现有的技术和平台相匹配,并为你的特定抓取工作挑选最合适的工具。

好了,现在让我们仔细看看不同类型的网页抓取器和每个类别的流行代表。我们开始吧


SaaS抓取器

SaaS抓取平台通常提供一体化的服务,你使用他们的工具来定义你想抓取的网站,以及如何对检索到的数据进行转换,并最终提供给你。

虽然它们通常需要经常性的订阅费用,但它们也提供了相当多的额外服务(如代理管理、浏览器支持),而其他解决方案要么根本不支持,要么只能通过第三方插件支持。

一般来说,为你的抓取项目选择一个SaaS平台将为你提供最全面的软件包,无论是在可扩展性还是可维护性方面。

ScrapingBee

ScrapingBee提供了一个轻量级的REST API(以及流行语言平台的支持库),它提供了对该平台所有功能的简单访问。

在这些功能中,你会发现支持数据提取(使用CSS选择器)、网页截图、访问谷歌的搜索API和传统(数据中心),以及高级住宅代理。特别是后者往往是必要的,以避免在访问一个网站时被封锁。

ScrapingBee还提供了对成熟的Chrome浏览器引擎的访问,这在抓取严重依赖JavaScript和客户端渲染的网站时尤为重要。

我应该何时使用ScrapingBee?

ScrapingBee是为那些希望自己处理抓取管道而不需要照顾代理和无头浏览器的开发者和技术公司准备的。

ScrapingBee的黑匣子方法确保所有的代理和网络管理都由平台负责,用户只需要提供所需的网站地址以及适用的请求参数。

ScrapingBee的优点

  • 易于整合
  • 全面的文件
  • 完全支持带有JavaScript渲染的SPA
  • 比购买代理更便宜,即使是每月有大量的请求也是如此
  • 支持Python和JavaScript的库

ScrapingBee的缺点

  • 需要你方面的开发人员专业知识(特别是网络API处理)。

Diffbot

Diffbot提供了一套网络API,以结构化的格式返回抓取的数据。该服务支持情感和自然语言分析,不过它的价格比较高,最小的计划是每月300美元起。

我应该在什么时候使用Diffbot?

Diffbot的主要受众是开发者和科技公司,他们的使用案例更多集中在数据分析(包括情感和自然语言)。

Diffbot的优点

  • 易于整合
  • 情绪分析

Diffbot的缺点

  • 并非对所有网站都适用
  • 仅在企业计划中支持完全的代理
  • 昂贵的

桌面爬虫应用

与SaaS供应商相反,桌面抓取器是(本地)安装的应用程序,你可以完全控制(非常像你的网络浏览器)。

虽然它们通常不附带订阅标签,而且是免费提供或一次性许可费,但它们也要求你维护你所运行的任何刮刀实例。这意味着你需要提供硬件、连接和整体系统维护。根据你的设置,你可能还会遇到扩展你的抓取器实例的问题。

然而,对于较小的项目,它们绝对是一个可行的选择。

ScrapeBox

ScrapeBox是一个桌面抓取器,可用于Windows和macOS,主要侧重于SEO相关的任务,供应商声称它是 “SEO的瑞士军刀”。虽然,它确实带有一些其他功能,扩展了搜索引擎优化的范围(如YouTube搜刮、电子邮件聚合、内容发布等)。

我应该何时使用ScrapeBox?

ScrapeBox的定位主要是用于SEO,但它对批量抓取YouTube和一般内容抓取可能同样有用。

由于其在可扩展性和代理支持方面的限制,它可能对具有较小数据集的抓取项目特别有用,而且没有必要旋转或指定客户端位置。

ScrapeBox的优点

  • 在你的本地机器上运行
  • 永久许可(一次性收费)
  • 功能丰富

ScrapeBox的缺点

  • 有限的可扩展性(刮取大型网站时可能很慢)。
  • 代理人有额外的费用

ScreamingFrog

ScreamingFrog的SEO蜘蛛是一个用于Windows、macOS和Linux的网站爬虫。它允许你抓取URL来分析和执行技术审计和现场SEO。它能够有效地抓取小型和大型网站,同时允许你实时分析结果。

我应该在什么时候使用ScreamingFrog?

在本文提到的所有平台和服务中,ScreamingFrog专门专注于SEO,所以它对SEO专业人员和专门从事这一领域的机构最有用。

ScreamingFrog的优点

  • 免费层级
  • 对SEO相关项目有用
  • 实时监测

ScreamingFrog的缺点

  • 按年订阅
  • 免费层相当有限(只有抓取)。

Easy Web Extract

Easy Web Extract是一个经典的Windows桌面应用程序,并提供了一个用户友好的用户界面,大多数数据选择步骤可以在不需要代码的情况下进行配置。

我应该在什么时候使用Easy Web Extract?

与ScrapeBox和ScreamingFrog不同,Easy Web Extract并没有将其主要重点放在SEO上,而是将自己作为通用的抓取器来销售。

由于该应用程序受到本地系统和网络资源的限制,你可能会遇到可扩展性和网站阻塞的问题。在这种情况下,它可能对小规模的抓取工作效果最好。

Easy Web Extract的优点

  • 可视化的点击式刮刀配置
  • 免费试用版
  • 永久许可(一次性收费)
  • 许可证费用不高

Easy Web Extract的缺点

  • 没有最近发布的信息
  • 有限的可扩展性
  • 手动代理配置

无代码浏览器抓取器

另一类相当流行的网络抓取器是基于浏览器扩展的。这些抓取器直接在你的网络浏览器实例中运行,并充分利用你的浏览器引擎及其集成的网络技术(DOM、CSS样式和选择器,以及运行的JavaScript)。

Firefox和Chrome的扩展库中都有无数这样的抓取工具。以Chrome为例,你可以在https://chrome.google.com/webstore/search/scraper?_category=extensions,找到一个完整的列表但让我们看看这一类刮刀的三个代表。

WebScraper.io

WebScraper是最受欢迎的Chrome浏览器抓取扩展之一。它允许你直接从你的浏览器中抓取网站,而不需要在本地设置任何工具或或编写搜刮脚本代码。

他们还提供基于云的付费订阅服务,允许你在其基础设施上执行你的搜刮任务。如果你的脚本需要设置一个特定的抓取地点,这可能特别有用,并使用代理。

我应该何时使用WebScraper.io?

没有开发人员、营销团队、产品经理的公司…

WebScraper.io的优点

  • 使用简单

WebScraper.io的缺点

  • 不能处理复杂的网络抓取情况

Instant Data Scraper

Instant Data Scraper是webrobots.io的扩展。你只需将其添加到你的Chrome浏览器配置文件中,之后在你的浏览器工具栏中就会出现一个新的按钮,让你可以访问该抓取器的功能。

该扩展是非常以数据表为中心的,你只需要用鼠标选择所需的数据项。一旦抓取完成,你可以将数据导出为CSV或Excel文件。

我应该在什么时候使用Instant Data Scraper?

用于快速的、即时的抓取会议。

Instant Data Scraper的优点

  • 直观的用户界面

Instant Data Scraper的缺点

  • 有限的抓取行动

Scraper

Scraper使用XPath表达式来提取数据。你添加扩展,打开所需的页面,右击并选择 “类似的抓取”。

该扩展目前不追求任何商业利益,所以它是完全免费的,但也不提供任何额外的服务(如基于云的执行)。

我应该何时使用Scraper?

用于没有复杂页面结构或浏览要求的基本提取任务。

Scraper的优点

  • 完全免费

Scraper的缺点

  • 有限的爬取行动

DIY爬虫(框架、库)

最后,但并非最不重要的是,当然也可以选择用你最喜欢的编程语言建立你自己的、完全定制的抓取器。

你会发现几乎每一种语言都有网络抓取库和整个框架,甚至有些更奇特的语言,如统计学上的R语言,都支持网络抓取。

虽然我们将在下面的例子中关注Python、PHP和JavaScript

Scrapy

Scrapy是一个用Python编写的免费开源网页抓取框架。由于它以异步方式处理请求,它在处理大量网站时表现相当好,这有助于其良好的扩展能力。

我应该在什么时候使用Scrapy?

Scrapy绝对是为有Python背景的人准备的。虽然它是一个框架,并能自行处理大量的搜刮工作,但它仍然不是一个开箱即用的解决方案,而是需要有足够的Python经验。

例如,它在大规模网络搜刮中效果特别好。

  • 提取电子商务产品数据
  • 从新闻网站提取文章
  • 抓取整个域名的链接

Scrapy的优点

  • 大量的功能来解决最常见的网络搜刮问题
  • 积极维护
  • 伟大的文件

Scrapy的缺点

  • 需要开发经验
  • 对JavaScript的支持需要手动配置

pyspider

pyspider是另一个开源的网络抓取工具。它有一个网络用户界面,允许你监控任务、编辑脚本和查看结果。

我应该在什么时候使用pyspider?

与Scrapy类似,它需要有Python背景,但其集成的UI也使它更适合于普通大众,并提供了更友好的用户体验。

pyspider的优点

  • 开放源代码
  • 热门(16K Github星级)和活跃的项目
  • 解决了很多常见的网络刮擦问题
  • 强大的网络用户界面

pyspider的缺点

  • 陡峭的学习曲线
  • 依靠PhantomJS来执行JavaScript,而PhantomJS已经被Headless Chrome所取代,这也是事实。

Goutte

Goutte是一个为通用的网络抓取和网络抓取而设计的PHP库。它在很大程度上依赖于Symfony组件,并方便地将它们结合起来以支持你的抓取任务。

Goutte提供了一个很好的API来抓取网站并从HTML/XML响应中提取数据。

它还与Guzzle请求库很好地整合在一起,允许你为更高级的用例定制框架。

我应该何时使用Goutte?

作为一个PHP库,Goutte当然仅限于PHP环境,但如果你选择的语言是PHP,你可能绝对想看看它。

Goutte的优点

  • 开放源代码
  • 免费

Goutte的缺点

  • 没有Scrapy那么受欢迎
  • 比Scrapy更少的集成

Beautiful Soup

在我们对 PHP 园地的短暂游览之后,我们马上又回到了 Python。这次是Beautiful Soup

与Scrapy和pyspider不同,BS4–该库的粉丝们亲切地称它为–不是一个框架,而是一个传统的库,你可以在你的搜刮器应用中使用。

我应该何时使用美丽汤?

如果你决定使用Python作为你的搜刮器,但又不想受到任何框架要求的限制,BS4是一个很好的选择。

Beautiful Soup提供了一套简单明了的功能,将支持你建立自己的刮刀。

Beautiful Soup的优点

  • 定期发布
  • 活跃的社区
  • 直截了当的API

Beautiful Soup的缺点

  • 对非开发人员来说难以使用

Cheerio.js

如果你熟悉jQuery,你会立刻对Cheerio.js感到宾至如归,它本质上是服务器端的对应工具。

Cheerio支持你在jQuery中知道的所有CSS选择器语法,并允许你从一些来源解析HTML文档,用熟悉的$('')调用提取数据。

我应该何时使用Cheerio.js?

真的可以用一句话来概括:当你有HTML内容需要在JavaScript或Node.js环境中进行解析时。没错,你应该熟悉JavaScript、Node.js和npm。

Cheerio.js的优点

  • 熟悉jQuery语法与CSS选择器
  • 卓越的解析和数据提取性能

Cheerio.js的缺点

  • 不支持JavaScript生成的内容(SPA)。
  • 需要有JavaScript和Node.js环境方面的经验

Puppeteer

Puppeteer是一个Node.js库,作为Chrome Headless实例的桥梁,它允许你控制一个完整的浏览器设置,并从你的JavaScript代码中搜刮网络,就像你是任何一个普通用户一样。

在这种情况下,完全控制意味着你可以拍摄屏幕截图,加载SPA,并发送和处理JavaScript事件。

我应该在什么时候使用Puppeteer?

如果你选择的平台是JavaScript,而你想搜刮JavaScript含量高的网站(如SPA),例如Cheerio无法访问所需数据,那么Puppeteer将是你的首选工具。在一个适当的浏览器引擎的支持下,Puppeteer将允许你在短时间内访问这些数据宝藏。

Puppeteer的优点

  • 提供一个完整的浏览器环境
  • 能够解决自动化的JavaScript挑战

Puppeteer的缺点

  • 需要安装Chrome浏览器
  • 比Cheerio等的资源更重。

Common Crawl

虽然本身不是一个搜刮器应用程序或代码框架,但仍然值得一提的是Common Crawl

该项目并不像我们迄今为止谈到的服务和工具那样发挥数据提取器的功能,而是从一个非常不同的角度来处理这个话题。它基本上是提前抓取和刮擦网络,并将这些数据作为公开可用的数据集,供所有人免费访问。

为了将他们的爬行努力和可用数据纳入视野,截至写下这些行文时,他们目前的数据集接近400TB(为了与一些完全不相关的对象不可避免的比较这大约是65万张传统CD)。

我应该在什么时候使用Common Crawl?

如果它的数据集符合你的要求,Common Crawl将是理想的。如果它预先抓取的数据质量足以满足你的使用情况,它可能是评估网络数据的最简单方法。

Common Crawl的优点

  • 数据随时可得
  • 不需要抓取基础设施

Common Crawl的缺点

  • 没有定制数据集的空间
  • 非常大的下载量

总    结

网络抓取的世界是围绕着一个相当多样化的景观而建立的。它为各种数据搜刮工作提供解决方案,从小型的本地桌面应用到企业平台,这些平台可以将你的爬虫扩展到每秒数百个请求。

除此之外,如果你决定走手工路线,建立自己的平台来抓取和爬行网络,还有大量的抓取器库可以支持你使用几乎所有的编程语言。

无论你选择哪种技术,确保你在将其用于生产之前对其进行良好的测试,同时也要检查边缘案例。两个重要的方面是平台的扩展性如何(也就是说,它如何处理大量的URL),以及它如何确保你的请求不会首先被阻止。

我们希望这篇文章为你提供了一个很好的,关于网络抓取的不同技术的初步概述,并且它可能使你更容易在所有这些不同的平台、服务、技术和库中进行选择。

 

blank

Written by 爬取 大师

阿里P12级别选手,能够突破各种反爬, 全能的爬取大师,擅长百万级的数据抓取!没有不能爬,只有你不敢想,有爬取项目可以联系我邮箱 [email protected] (带需求和预算哈, 不然多半不回复)