加载文档
在本指南中,我们将探讨如何使用 Cheerio 加载文档以及何时使用不同的加载方法。
如果您熟悉 jQuery,那么这一步对您来说将是全新的。jQuery 操作的是唯一的内置 DOM。在 Cheerio 中,我们需要传入 HTML 文档。
loadBuffer
、stringStream
、decodeStream
和 fromURL
方法在浏览器环境中不可用。 相反,使用 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 数据的类型和来源。鼓励用户通读每种方法,并选择最适合其需求的方法。