返回博客
指南
Gabriel CiociLast updated on Mar 31, 20262 min read

Cheerio.load 无法正常工作:这是如何使用 Cheerio 抓取网页

Cheerio.load 无法正常工作:这是如何使用 Cheerio 抓取网页

网络爬虫是一种利用机器人脚本获取可靠数据的技术。只要采用正确的编程语言和工具集,网络爬虫就能在几分钟内高效爬取成千上万个网站。

这是一种获取海量信息的高效途径,这些信息可快速处理和清理以提取数据。即便在涉及假冒商品的某些情况下,网页抓取工具也能用于浏览在线平台,查找所有销售假货的商品。

由于网站链接的存在,您可以轻松举报这些商品。但在过去,手动搜索并浏览所有网站是一项相当艰巨的任务。虽然您可能认为网络爬取工作看起来很简单,但事实绝非如此。爬取工作是一个复杂的过程,需要具备技术知识。

您肯定会遇到像ParseHub和Diffbot这样的工具,使用它们需要具备一定的技术知识,但在今天的文章中,您将了解“CHEERIO”、它为何有时无法加载,以及其他相关内容。

Cheerio.Load 无法正常工作:原因何在?

Cheerio.Load 无法正常工作:原因何在?

有时你会发现 Cheerio.load 无法正常工作。你清楚存在问题,却无法找出具体原因。请记住一点:"<tbody" 元素必须是 "<table> 元素的子元素。如果这些设置不正确,Cheerio.load 就会失效。

在当前版本的 Cheerio 标记解析中,解析器本身无法从该特定错误中恢复。你必须编写有效的 HTML 字符串,这意味着必须将字符串包裹在 "</table> 和 "<table> 标签内。若降级至 Cheerio 0.22.0,其解析器将自动处理此问题。

Cheerio:您需要了解的内容

Cheerio:您需要了解的内容

那么,Cheerio 究竟是什么?它是一个针对特定服务器的精简、灵活且快速的实现方案。您可能会疑惑:既然已有基于 Node.JS 的爬取工具“Puppeteer”,为何还需要 Cheerio?

这是因为 Puppeteer 更多用于自动化浏览器操作,并支持通过脚本运行实现实时网页浏览。Puppeteer 能完美兼容所有基于 React 和 Angular 构建的网站。你还可以用 Puppeteer 生成 PDF 文件并截取屏幕截图。

但在速度方面,没有任何工具能超越 Cheerio。它是一款专为数据抓取而设计的极简工具,你还可以将其与其他各种模块结合,创建端到端的脚本。该脚本不仅能将输出保存为 CSV 格式,还能返回其他所有数据。

Cheerio无疑是数据抓取工作的理想选择。它能与HTML文档和Chrome浏览器无缝协作。使用过程中您不会遇到任何问题,但在实际应用前,您需要了解其工作原理。

如何使用 Cheerio 抓取数据?

如何使用 Cheerio 抓取数据?

若要借助 Cheerio 进行数据抓取,请遵循以下步骤:

步骤 1:Mkdir country-popular cd country-popular npm init

步骤 2:npm install Cheerio Axios npm install -D typescript esbuild esbuild-runner

步骤 3:"scripts" : [ "scrape": "esr./src/index.ts"]

步骤 4:import cheerio from "cheerio"; const $ = Cheerio

步骤 5:const firstHeader = $('h2.primary'); console

步骤 6:npm run scrape

如何从其他网站获取数据?

如何从其他网站获取数据?

您是否希望从其他网站获取数据/信息?请按照以下 5 个步骤操作:

  • 您需要检查想要爬取的网站 HTML
  • 利用代码访问该网站的 URL,然后下载 HTML 文档及其页面内容。
  • 将内容转换为可读格式
  • 随后,您需要提取所有有用的信息,并将其保存为结构化格式。

如何解析 Node.js 中的 HTML 文件?

如何解析 Node.js 中的 HTML 文件?

您可以利用 npm 模块 htmlparser 和 jsdom 在 Node.js 中进行解析并构建 DOM。其他可选方案包括:

  • CsQuery用于
  • 您可以轻松地将 XHTML 转换为 HTML,并利用 XSLT
  • BeautifulSoup(适用于 Python)
  • HTMLAgilityPack 适用于

使用 Cheerio 在 Node 中抓取网页:如何操作?

使用 Cheerio 在 Node 中抓取网页:如何操作?

在本节中,您将了解如何借助 Cheerio 抓取网页。但在采用此方法之前,您必须确保拥有相应的权限。否则,您可能会发现自己侵犯了隐私、违反了版权或服务条款。

您将学习如何抓取所有国家及各类行政区划的 ISO 3166-1 alpha-3 代码。您可以在 ISO 3166-1 alpha-3 页面的代码区域中找到国家数据。那么,现在让我们开始吧!

步骤 1:创建工作目录

在此,您需要在终端区域运行命令“mkdir learn-cheerio”来为项目创建一个目录。该命令将创建一个名为“learn-cheerio”的目录,您也可以自由为其指定一个

在此步骤中,您将通过在终端执行命令来创建项目目录。该命令将生成名为 learn-cheerio 的目录。如需自定义,您可为其指定其他名称。

正确执行上述操作或“mkdir learn-cheerio”命令后,您将看到一个名为“learn-cheerio”的文件夹。在目录创建完成且成功加载外部资源后,您需要打开该目录并使用文本编辑器来初始化项目。

步骤 2:初始化项目

为确保 Cheerio 能在此项目中正常运行,您需进入项目目录并进行初始化。只需使用您喜欢的文本编辑器打开该目录,然后运行 "npm init -y" 命令进行初始化。完成此过程后,项目目录根目录下将生成一个 "package.json" 文件。

步骤 3 - 安装依赖项

在此步骤中,您将通过运行“npm install Axios cheerio pretty”来安装项目依赖项。

执行此命令时,加载过程可能需要一些时间,请耐心等待。成功运行命令后,您可以在 `package.json` 文件的 `dependencies` 部分下方注册这三个依赖项。

第一个依赖项名为“Axios”,第二个是“Cheerio”,最后一个是“Pretty”。Axios 是一个广为人知的 HTTP 客户端,可在浏览器和 Node.js 环境中运行。您需要它,因为 Cheerio 被视为一个标记解析器。

因此,为了确保 Cheerio 能解析标记并刮取您所需的数据,您必须使用

为了确保 Cheerio 能解析标记并刮取所需数据,你必须使用 Axios 从网站获取标记。如果你愿意,也可以使用其他 HTTP 客户端来获取标记,不一定要非得是 Axios。

另一方面,“Pretty”是一个 npm 包,用于美化标记,使其在终端上打印时完全可读。

步骤 4:检查您想要抓取的网页

在从网页抓取数据之前,你需要先充分了解该页面的 HTML 数据结构。在本节中

在从网页抓取数据之前,了解目标页面的 HTML 结构至关重要。在维基百科上,请访问 ISO 3166-1 alpha-3 代码页面。在“当前代码”部分下方,你会看到一个国家及其代码的列表。

现在,只需按下“CTRL + SHIFT + I”快捷键打开开发者工具。或者,您也可以右键点击并选择“检查”选项。下图展示了“列表”在开发者工具中的显示效果

第 5 步:编写代码以抓取数据

现在,您需要编写代码来抓取数据。开始工作前,必须运行“touch app.js”命令来生成 app.js 文件。如果该命令执行成功,您就能在项目目录中无错误地创建 app.js 文件。

与其他 Node 包一样,在开始使用它们之前,你需要引入 pretty、Cheerio 和 anxious。为此,你需要添加以下代码:

const axios = require ["axios"]

const Cheerio = require ["cheerio"]

const pretty = require ["pretty"]

请务必将这些代码置于 app.js 文件的最顶部。在开始抓取数据之前,请确保你已充分了解 Cheerio。你可以通过操作生成的数据结构来解析标记。这样做将有助于你掌握 Cheerio 的语法以及常见的工作流程。以下是包含 LI 元素的 UL 元素的标记:

const URL markup = `

<ul class="fruits">

<li class="frutis__mango"> 芒果 </li>

<li class="fruits__apple"> 苹果 </li>

</ul>

您可以轻松地将此特定变量命令添加到 app.js 文件中。

WebScrapingAPI 能提供哪些帮助?

WebScrapingAPI 能提供哪些帮助?

图片来源: 

至此,您已经了解了如何使用 Cheerio、Cheerio.load 无法运行的原因、div 元素、文本内容、节点以及加载 HTML 的方法。尽管 Cheerio 是一款出色的网页抓取工具,但市面上还有其他选择。而在众多工具中脱颖而出的,正是 WebScrapingAPI 软件。

这款抓取软件已被超过 10,000 家企业用于清理、网页抓取及收集所有有用数据。通过该软件,您可以轻松从任何类型的网页获取原始 HTML,且其采用简洁的 API 接口。它能为贵公司全体人员提供可直接处理的数据。

该软件将通过 CAPTCHA 验证和真实浏览器,自动处理代理服务器的 JavaScript 及视觉渲染。它必将助力您的业务增长,其客户支持团队将全天候 24x7 待命,随时为您提供所需帮助。与其他爬取 API 软件相比,这款软件的数据采集速度快达 3 倍。

WebScraping API 还支持您在 Vue、AngularJS、React 以及其他多种 JS 库中抓取网页。您还将接触到 Amazon Scraper API、Google 搜索与结果 API,

优点: 

  • 提供卓越的客户支持
  • 操作简便
  • 具备反机器人检测功能
  • 轮换代理

缺点: 

在使用该软件期间,我未发现任何缺点

选择 WebScrapingAPI:最佳网页抓取软件

选择 WebScrapingAPI:最佳网页抓取软件

图片来源: 

在当今世界,网络爬取和数据抓取至关重要。这项工作通常由精通网站抓取且出错率极低的专家来完成。抓取工作能帮助您提取所需数据,而像WebScrapingAPI这样的软件则能大幅提升提取速度。

该软件作为网站抓取领域的领先工具而广受欢迎。使用该抓取软件的企业每月可获取超过5000万条数据。该软件还采用了尖端技术,使其在众多工具中脱颖而出。

通过该平台,您可以进行价格比较、潜在客户开发、财务数据分析、市场调研以及其他多种操作。那么,您是否对这款用于数据采集的网站抓取工具感兴趣?现在就联系 WebScrapingAPI 的专家吧!使用他们的软件可避免请求被拦截,并能获得优质的服务。

此外,请务必查看其定价方案。您将发现多种套餐选择,起价仅为49美元。在开始使用该软件之前,请务必进行一番调研并确认价格。 

立即使用 WebScrapingAPI

关于作者
Gabriel Cioci, 全栈开发工程师 @ WebScrapingAPI
Gabriel Cioci全栈开发工程师

加布里埃尔·乔奇(Gabriel Cioci)是 WebScrapingAPI 的全栈开发工程师,负责构建和维护该平台的网站、用户面板以及面向用户的核心功能模块。

开始构建

准备好扩展您的数据收集规模了吗?

加入2,000多家企业,使用WebScrapingAPI在无需任何基础设施开销的情况下,以企业级规模提取网络数据。