You need to enable JavaScript to run this app. 使用Cheerio爬取网页返回不完整HTML,如何获取app容器内动态内容
优惠活动
大模型
产品
解决方案
定价
更多

使用Cheerio爬取网页返回不完整HTML,如何获取app容器内动态内容

问题原因

你要爬取的站点属于客户端渲染的单页应用(SPA),初始返回的HTML仅包含空的#app节点和JS资源,页面可见内容是浏览器加载执行完JS脚本后动态生成的。cheerio仅能解析静态HTML文本,不具备JS执行能力,因此无法获取到动态渲染的内容。

解决方案

方案1:使用无头浏览器执行JS后再提取内容(适配绝大多数SPA场景)

可以使用puppeteer这类支持无头模式的浏览器工具,模拟浏览器加载页面、执行JS,等页面渲染完成后再提取内容,示例代码如下:

const puppeteer = require('puppeteer');

(async () => {
  // 启动无头浏览器
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  // 跳转目标页面,等待网络空闲后认为渲染完成
  await page.goto('https://www.fideyo.com/list', { waitUntil: 'networkidle2' });
  // 获取渲染完成后的完整HTML
  const html = await page.content();
  
  // 之后可以继续用cheerio解析html,也可以直接用puppeteer的API提取内容
  const cheerio = require('cheerio');
  const $ = cheerio.load(html);
  console.log($('#app').html());

  await browser.close();
})();

使用前需要先安装依赖:npm install puppeteer cheerio

方案2:直接调用站点后台接口获取数据

如果不想启动浏览器消耗资源,可以通过浏览器开发者工具的「网络」面板,筛选页面加载时请求数据的接口,直接调用接口获取原始数据,该方案效率远高于页面渲染爬取,适合批量采集场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 18:54:00