加载文档
在本指南中,我们将介绍如何使用 Cheerio 加载文档以及何时 使用不同的加载方法。
提示
如果你熟悉 jQuery,那么这一步对你来说会很陌生。jQuery 操作的是一个由浏览器解析并提供的 DOM。而在 Cheerio 中,我们需要自己向其传入 HTML 文档。
各方法的可用情况
默认情况下,只有 load
方法可以使用。如果你正在使用的是最新的 NodeJS
版本,并且同时是按照 ES 模块导入(import)的(即,你的
文件名以 .mjs
作为扩展名,或者在
package.json
文件中设置了 type: "module"
)。你也可以直接使用 import 或 require 指令/函数加载
cheerio/lib/batteries
。
为什么会这样?
某些默认情况下不可用的方法依赖是否使用
node:
协议。此协议
仅支持 Node 12 版本中的 ES 模块。为了保 持与 Node
12 版本的兼容性,我们只在按照 ES 模块导入(import)时支持包括 load
方法在内的所有方法。
load
load 方法是 Cheerio 用来解析 HTML 或 XML 文档的最基本方式。 该方法的参数是一个字符串形式的文档,返回值是一个 Cheerio 对象,然后,你就可以用该对象来遍历和操作文档了。
以下是 load 方法的使用示例:
import * as cheerio from 'cheerio';
const $ = cheerio.load(
'<html><head><title>Hello, world!</title></head></html>',
);
console.log($('h1').text());
// Output: Hello, world!
提示
与浏览器环境类似,如果 <html>
、<head>
以及
<body>
元素不存在的话,load
方法会补全这些元素。你可以将 load
方法的第三个
参数设置为 false
来禁止这一行为。
const $ = cheerio.load('<ul id="fruits">...</ul>', null, false);
$.html();
//=> '<ul id="fruits">...</ul>'