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

Node.js中使用Cheerio解析HTML时出现undefined错误求助

解决Cheerio解析HTML返回undefined的问题

嘿,我帮你找到了问题的关键,咱们一步步来修正:

1. 核心错误:CSS选择器写错了

你要解析的目标是class为faq_cat的div元素,但你的代码里写的是:

const h2 = $('faq_cat').attr('id')

$('faq_cat')是在查找名为<faq_cat>的自定义标签,而不是带faq_cat类的div!正确的类选择器需要在类名前加.,应该改成:

const h2 = $('.faq_cat').attr('id')

2. 第二个坑:忘记返回解析结果

你的parseFields函数里定义了fields但没有返回它,导致后续的.then(function(app) { ... })里的app也会是undefined。修正后的完整函数应该是:

function parseFields ($) {
  const h2 = $('.faq_cat').attr('id') 
  const fields = { h2 };
  // 必须返回结果,才能传递到下一个then
  return fields;
}

3. 额外排查步骤(如果还是有问题)

  • 确认返回的HTML是否包含目标元素:在加载Cheerio前打印请求到的HTML,确保内容正确:
    request(options, opts.throttle)
      .then(html => {
        console.log('抓取到的HTML:', html); // 检查是否存在目标div
        return cheerio.load(html);
      })
      .then(parseFields)
      .then(app => resolve(app))
      .catch(reject);
    
  • 如果HTML里确实没有目标元素,要检查是不是页面内容是JS动态渲染的——request库只能抓取静态HTML,动态生成的内容需要用Puppeteer这类工具模拟浏览器渲染。

关于你的Express服务端代码

这段代码看起来和当前Cheerio解析问题无关,如果是google-play-scraper的调用有问题,可以单独提出来排查,但当前重点还是解决Cheerio的选择器和返回值问题。

内容的提问来源于stack exchange,提问作者Нек Траммм

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:17:03