Cheerio 提供了多种加载 HTML 内容的方法,适用于不同的使用场景:
1. 从 HTML 字符串加载
最常用的方法,直接传入 HTML 字符串:
javascriptconst cheerio = require('cheerio'); const $ = cheerio.load('<div class="content"><p>Hello</p></div>');
2. 从文件加载
读取 HTML 文件后加载:
javascriptconst fs = require('fs'); const cheerio = require('cheerio'); const html = fs.readFileSync('index.html', 'utf8'); const $ = cheerio.load(html);
3. 使用配置选项加载
cheerio.load() 方法接受第二个参数作为配置选项:
javascriptconst $ = cheerio.load(html, { // 是否识别 XML 模式 xmlMode: false, // 是否解码 HTML 实体 decodeEntities: true, // 是否包含空白节点 withDomLvl1: false, // 自�认函数处理 XML 标签 normalizeWhitespace: false, // 使用 htmlparser2 的选项 xml: { xmlMode: false, decodeEntities: true } });
4. XML 模式加载
处理 XML 文档时启用 XML 模式:
javascriptconst xml = '<root><item>Value</item></root>'; const $ = cheerio.load(xml, { xmlMode: true });
5. 流式处理(结合其他库)
对于大文件,可以使用流式读取:
javascriptconst 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选项