跳至主要内容

加载文档

在本指南中,我们将探讨如何使用 Cheerio 加载文档以及何时使用不同的加载方法。

提示

如果您熟悉 jQuery,那么这一步对您来说将是全新的。jQuery 操作的是唯一的内置 DOM。在 Cheerio 中,我们需要传入 HTML 文档。

方法可用性

loadBufferstringStreamdecodeStreamfromURL 方法在浏览器环境中不可用。 相反,使用 load 方法解析 HTML 字符串。

load

load 方法是使用 Cheerio 解析 HTML 或 XML 文档的最基本方法。它接受一个包含文档的字符串作为参数,并返回一个 Cheerio 对象,您可以使用该对象来遍历和操作文档。

以下是如何使用 load 方法的示例

import * as cheerio from 'cheerio';

const $ = cheerio.load('<h1>Hello, world!</h1>');

console.log($('h1').text());
// Output: Hello, world!
提示

类似于 Web 浏览器上下文,load 将引入 <html><head><body> 元素(如果它们不存在)。您可以将 load 的第三个参数设置为 false 以禁用此功能。

const $ = cheerio.load('<ul id="fruits">...</ul>', null, false);

$.html();
//=> '<ul id="fruits">...</ul>'

API 文档中了解有关 load 方法的更多信息。

loadBuffer

loadBuffer 方法类似于 load 方法,但它接受一个包含文档的缓冲区作为参数,而不是字符串。Cheerio 将运行 HTML 编码嗅探算法来确定文档的编码。当您以二进制形式拥有文档时(例如,当您从文件读取它或通过网络连接接收它时),这很有用。

以下是如何使用 loadBuffer 方法的示例

import * as cheerio from 'cheerio';
import * as fs from 'fs';

const buffer = fs.readFileSync('document.html');

const $ = cheerio.loadBuffer(buffer);

console.log($('title').text());
// Output: Hello, world!

API 文档中了解有关 loadBuffer 方法的更多信息。

stringStream

从流中加载 HTML 文档并且知道编码时,可以使用 stringStream 方法将其解析为 Cheerio 对象。

import * as cheerio from 'cheerio';
import * as fs from 'fs';

const writeStream = cheerio.stringStream({}, (err, $) => {
if (err) {
// Handle error
}

console.log($('title').text());
// Output: Hello, world!
});

fs.createReadStream('document.html', { encoding: 'utf8' }).pipe(writeStream);

API 文档中了解有关 stringStream 方法的更多信息。

decodeStream

从流中加载 HTML 文档并且不知道编码时,可以使用 decodeStream 方法将其解析为 Cheerio 对象。此方法运行 HTML 编码嗅探算法来确定文档的编码。

以下是如何使用 decodeStream 方法的示例

import * as cheerio from 'cheerio';
import * as fs from 'fs';

const writeStream = cheerio.decodeStream({}, (err, $) => {
if (err) {
// Handle error
}

console.log($('title').text());
// Output: Hello, world!
});

fs.createReadStream('document.html').pipe(writeStream);

API 文档中了解有关 decodeStream 方法的更多信息。

fromURL

fromURL 方法允许您从 URL 加载文档。此方法是异步的,因此您需要使用 await(或 then 块)来访问生成的 Cheerio 对象。

import * as cheerio from 'cheerio';

const $ = await cheerio.fromURL('https://example.com');

API 文档中了解有关 fromURL 方法的更多信息。

结论

Cheerio 提供了几种加载 HTML 文档并将其解析为 DOM 结构的方法。这些方法对于不同的情况很有用,具体取决于 HTML 数据的类型和来源。鼓励用户通读每种方法,并选择最适合其需求的方法。