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

如何在Cheerio中选中HTML页面所有元素并实现遍历?

Cheerio 选中并遍历所有元素的解决方案

1. 如何选中每一个元素?

当然可以!Cheerio完全支持标准CSS选择器,你只需要用**通配符选择器***就能匹配页面上的所有元素——不管它在DOM结构的哪一层,从根节点到最内层的嵌套元素都能一网打尽。代码示例:

const allElements = $('*');

2. 获取并遍历所有元素(含子元素)

你提到用$('body')只拿到了直接子元素,大概率是遍历方式的问题:$('body')本身只是选中<body>这个元素,如果你直接对它用.children(),那确实只能获取直接子元素。要拿到所有后代元素,有两种常用方法:

方法一:直接用通配符选中所有元素

最直接的方式就是用$('*'),它会返回包含整个页面所有元素的Cheerio对象,之后用.each()就能遍历每一个元素:

// 选中所有元素并遍历
$('*').each((index, elem) => {
  const $elem = $(elem);
  // 获取并处理元素文本,这里可以根据你的需求调整逻辑
  const elementText = $elem.text().trim();
  if (elementText) {
    console.log(`第${index+1}个元素的文本:${elementText}`);
  }
});

方法二:从body出发获取所有后代元素

如果你只想聚焦在<body>范围内的所有元素,可以用.find('*')方法,它会获取选中元素下的所有后代元素(不管层级):

// 获取body下的所有后代元素
const bodyAllElements = $('body').find('*');
// 遍历处理
bodyAllElements.each((index, elem) => {
  const text = $(elem).text().trim();
  // 你的解析逻辑...
});

简单总结下:通配符*是选中所有元素的核心,配合.each()就能完成遍历解析。如果之前的问题是因为误用了.children(),换成.find('*')或者直接用$('*')就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:58:48