You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Cheerio加载并操作字符串中的HTML片段?

解决Cheerio加载HTML片段直接访问目标节点的问题

直接给你两种无需依赖选择器定位head/body的方法,能直接获取目标元素并调用Cheerio的方法:

方法1:使用cheerio.parseHTML解析片段

parseHTML会直接将HTML字符串解析为DOM节点数组,转成Cheerio对象后就能直接操作:

const cheerio = require('cheerio');

// 处理div片段
var htmlString = '<div class="artist"><i class="user blue circle icon"></i> Skyy</div>';
const divNodes = cheerio.parseHTML(htmlString);
const $div = $(divNodes);
console.log($div.text().trim()); // 输出:Skyy
console.log($div.attr('class')); // 输出:artist

// 处理meta片段
var metaString = '<meta name="description" content="My description">';
const metaNodes = cheerio.parseHTML(metaString);
const $meta = $(metaNodes);
console.log($meta.attr('content')); // 输出:My description

方法2:加载时禁用自动包裹完整文档

通过cheerio.load的配置项,阻止Cheerio把片段包装成<html><head><body>结构,直接以片段形式加载:

const cheerio = require('cheerio');

// 处理div片段
var htmlString = '<div class="artist"><i class="user blue circle icon"></i> Skyy</div>';
const $ = cheerio.load(htmlString, { isDocument: false });
console.log($.root().text().trim()); // 输出:Skyy
console.log($.root().attr('class')); // 输出:artist

// 处理meta片段
var metaString = '<meta name="description" content="My description">';
const $metaDoc = cheerio.load(metaString, { isDocument: false });
console.log($metaDoc.root().attr('content')); // 输出:My description

这两种方法都不用写$('body').children()这类依赖结构的选择器,直接拿到目标元素后就能调用.text()、.attr()等方法。

内容的提问来源于stack exchange,提问作者gordie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:42:52