使用 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 文件中。