站长资讯网
最全最丰富的资讯网站

聊聊使用Node.js + Cheerio 怎么进行数据抓取

要获取数据,你必须求助于网络抓取。本篇文章就来介绍一下如何使用Node和Cheerio抓取网站数据,希望对大家有所帮助!

聊聊使用Node.js + Cheerio 怎么进行数据抓取

在我们开始之前,你需要遵守当地的法纪法规,不可随意抓取未经允许公开的数据。

先决条件

以下是本教程需要的一些东西:

  • 你需要安装Node.js。如果你没有 Node,只需确保从Node.js 下载页面为你的系统下载它(https://nodejs.dev/download/)
  • 你需要在你的机器上安装一个文本编辑器,比如VSCode或Atom
  • 你至少应该对 JavaScript、Node.js 和文档对象模型 (DOM) 有基本的了解。

什么是 Cheerio?

Cheerio 是一个在 Node.js 中解析 HTML 和 XML 的工具,在 GitHub 上非常受欢迎,拥有超过23k 的 star 。

它快速、灵活且易于使用。由于它实现了 JQuery 的一个子集,如果你已经熟悉 JQuery,那么很容易开始使用 Cheerio。

Cheerio 和 Web 浏览器之间的主要区别在于,cheerio 不生成视觉渲染、加载 CSS、加载外部资源或执行 JavaScript。它只是解析标记并提供用于操作生成的数据结构的 API。这就解释了为什么它也非常快——cheerio 文档。

如果你想使用cheerio 来抓取网页,您需要首先使用axios或node-fetch等包来获取标记。

如何使用 Cheerio 在 Node 中抓取网页

在此示例中,我们将抓取此 Wikipedia 页面上列出的所有国家和其他司法管辖区的ISO 3166-1 alpha-3 代码。它位于ISO 3166-1 alpha-3页面的当前代码部分下。

这是国家/司法管辖区列表及其相应代码的样子:

聊聊使用Node.js + Cheerio 怎么进行数据抓取

第 1 步 – 创建工作目录

在此步骤中,您将通过在终端上运行以下命令为您的项目创建一个目录。该命令将创建一个名为learn-cheerio. 如果你愿意,你可以给它一个不同的名字。

mkdir learn-cheerio

learn-cheerio成功运行上述命令后,您应该能够看到一个名为 created 的文件夹。

在下一步中,您将在您喜欢的文本编辑器中打开刚刚创建的目录并初始化项目。

第 2 步 – 初始化项目

在此步骤中,您将导航到项目目录并初始化项目。在您喜欢的文本编辑器中打开您在上一步中创建的目录,并通过运行以下命令来初始化项目。

npm init -y

成功运行上述命令将package.json在项目目录的根目录下创建一个文件。

在下一步中,您将安装项目依赖项。

第 3 步 – 安装依赖项

在此步骤中,您将通过运行以下命令来安装项目依赖项。这将需要几分钟,所以请耐心等待。

npm i axios cheerio pretty

成功运行上述命令将在字段package.json下的文件中注册三个依赖项。dependencies第一个依赖是axios,第二个是cheerio,第三个是pretty

axios是一个非常流行的http 客户端,可以在 node 和浏览器中运行。我们需要它,因为cheerio 是一个标记解析器。

为了让 Cheerio 解析标记并抓取您需要的数据,我们需要axios用于从网站获取标记。如果您愿意,可以使用另一个 HTTP 客户端来获取标记。它不一定是axios.

pretty是用于美化标记的 npm 包,以便在终端上打印时可读。

在下一部分中,您将检查将从中抓取数据的标记。

第 4 步 – 检查您要抓取的网页

在从网页中抓取数据之前,了解页面的 HTML 结构非常重要。

在此步骤中,您将检查要从中抓取数据的网页的 HTML 结构。

导航到Wikipedia 上的ISO 3166-1 alpha-3 代码页面。在“当前代码”部分下,有一个国家列表及其相应的代码。CTRL + SHIFT + I您可以通过按chrome 上的组合键或右键单击然后选择“检查”选项来打开 DevTools 。

这是我在 chrome DevTools 中的列表:

聊聊使用Node.js + Cheerio 怎么进行数据抓取

在下一节中,您将编写用于抓取网页的代码。

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

在本节中,你将编写用于抓取我们感兴趣的数据的代码。首先运行以下将创建app.js文件的命令。

touch app.js

成功运行上述命令将app.js在项目目录的根目录下创建一个文件。

像任何其他 Node 包一样,在开始使用它们之前,你必须首先require axioscheerio和。你可以通过在刚刚创建pretty的文件顶部添加下面的代码来做到这一点。app.js

const axios = require("axios"); const cheerio = require("cheerio"); const pretty = require("pretty");

在我们编写用于抓取数据的代码之前,我们需要学习cheerio. 我们将解析下面的标记并尝试操作生成的数据结构。这将帮助我们学习 Cheerio 语法及其最常用的方法。

下面的标记是ul包含我们元素的li元素。

const markup = ` <ul class="fruits">   <li class="fruits__mango"> Mango </li>   <li class="fruits__apple"> Apple </li> </ul> `;

将上述变量声明添加到app.js文件中

如何在 Cheerio 中加载标记

cheerio你可以使用该cheerio.load方法加载标记。该方法将标记作为参数。它还需要另外两个可选参数。如果你有兴趣,可以在文档中阅读有关它们的

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号