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

使用Node.js+Cheerio爬取YouTube视频播放量返回空值如何解决

问题原因及解决方法

1. CSS选择器语法错误

你当前使用的选择器.view-count style-scope ytd-video-view-count-renderer中间带空格,在CSS选择器规则中空格代表选中后代元素,如果要选择同时包含三个类名的元素,需要将类名连写,中间不加空格,正确写法为:

let views = $('.view-count.style-scope.ytd-video-view-count-renderer');

2. 静态请求无法获取动态渲染内容

YouTube页面的播放量数据是页面加载完成后通过JavaScript动态渲染生成的,你直接用request发送GET请求拿到的初始HTML源码中不存在该元素,因此Cheerio无法解析到对应内容。


可行解决方案

方案一:使用Puppeteer获取动态渲染后内容

Puppeteer是无头浏览器工具,可以模拟真实浏览器环境加载页面,等待JS执行完成后再提取元素,示例代码如下:

console.log("Strumento avviato!")
const puppeteer = require('puppeteer');
const urlV = '替换为你的目标视频地址';

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  // 等待页面网络空闲,确保动态内容加载完成
  await page.goto(urlV, {waitUntil: 'networkidle2'});
  // 提取播放量文本
  const views = await page.$eval('.view-count.style-scope.ytd-video-view-count-renderer', el => el.textContent.trim());
  console.log(views);
  await browser.close();
})();

方案二:调用官方接口获取数据(更稳定,推荐)

直接使用YouTube官方提供的Data API获取视频播放量,无需处理反爬、动态渲染等问题,仅需申请API密钥后调用对应接口即可,开发和维护成本更低。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:30:04