乐闻世界logo
搜索文章和话题

Cheerio 如何加载 HTML 内容?有哪些加载方式?

2月22日 14:30

Cheerio 提供了多种加载 HTML 内容的方法,适用于不同的使用场景:

1. 从 HTML 字符串加载

最常用的方法,直接传入 HTML 字符串:

javascript
const cheerio = require('cheerio'); const $ = cheerio.load('<div class="content"><p>Hello</p></div>');

2. 从文件加载

读取 HTML 文件后加载:

javascript
const fs = require('fs'); const cheerio = require('cheerio'); const html = fs.readFileSync('index.html', 'utf8'); const $ = cheerio.load(html);

3. 使用配置选项加载

cheerio.load() 方法接受第二个参数作为配置选项:

javascript
const $ = cheerio.load(html, { // 是否识别 XML 模式 xmlMode: false, // 是否解码 HTML 实体 decodeEntities: true, // 是否包含空白节点 withDomLvl1: false, // 自�认函数处理 XML 标签 normalizeWhitespace: false, // 使用 htmlparser2 的选项 xml: { xmlMode: false, decodeEntities: true } });

4. XML 模式加载

处理 XML 文档时启用 XML 模式:

javascript
const xml = '<root><item>Value</item></root>'; const $ = cheerio.load(xml, { xmlMode: true });

5. 流式处理(结合其他库)

对于大文件,可以使用流式读取:

javascript
const fs = require('fs'); const cheerio = require('cheerio'); const stream = fs.createReadStream('large.html'); let html = ''; stream.on('data', chunk => { html += chunk; }); stream.on('end', () => { const $ = cheerio.load(html); // 处理 DOM });

最佳实践

  • 对于小到中等大小的 HTML,直接使用 cheerio.load()
  • 对于大文件,考虑分块处理或使用专门的流式解析器
  • XML 文档务必设置 xmlMode: true
  • 根据需求调整 decodeEntities 选项
标签:NodeJSCheerio