Node JS 使用 Cheerio 抓取 youtube 视频

Node JS Use Cheerio to scrape a youtube video

我正在尝试开发一个系统node.js,每 60 秒 更新视频标题的观看次数。现在,我正在尝试获取观看次数,然后我会完成剩下的工作。我在使用 Cheerio API 时遇到了问题。然后我使用这样的页面源进行响应:

console.log("Strumento avviato!")


//TODO: get views number with scraping

const urlV = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const axios = require("axios").default;
const cheerio = require('cheerio');
const request = require('request');
    request({
        method: 'GET',
        url: urlV
    }, (err, res, body) => {
        let $ = cheerio.load(body);
        let views = $('.view-count style-scope ytd-video-view-count-renderer');
        console.log(views.text());
    
    })

包含观看次数的标签如下:

问题是,通过这样做,return null:

let $ = cheerio.load(body);
    let views = $('.view-count style-scope ytd-video-view-count-renderer');
    console.log(views.text());

两个空白行作为控制台输出:

我怎样才能提取观看次数?

请不要抓取 DOM 来获取观看次数。您可以使用 Youtube API 获取统计信息并仅解析 json 它 returns.

我测试了以下方法,有效:

var options = {
  method: 'GET',
  json: true,
  url: 'https://www.googleapis.com/youtube/v3/videos',
  headers: {
    'Referer': 'YOUR DOMAIN URL'
  },
  qs: {
    part: 'statistics',
    id: 'dQw4w9WgXcQ',
    key: 'YOUR API KEY'
  }
};
request(options, function(err, res, body){
  console.log(body.items[0].statistics.viewCount);
});

您可以通过关注 these instructions 获得 Youtube API 的 API 密钥。您可以将 Referer 域设置为例如http://localhost 如果你是 运行 这个本地实例或者你控制的任何域。只需将 YOUR DOMAIN URL 替换为 http://localhost 或其他内容,然后将 YOUR API KEY 替换为 API 键 Google 即可。