我正在嘗試使用 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());
})
包含查看次數的標簽如下:

問題是通過這樣做,回傳空值:
let $ = cheerio.load(body);
let views = $('.view-count style-scope ytd-video-view-count-renderer');
console.log(views.text());
兩個空行作為控制臺輸出:

我怎么能提取視圖的數量?
uj5u.com熱心網友回復:
請不要抓取 DOM 來獲取查看次數。您可以使用 Youtube API 獲取統計資訊并決議它回傳的 json。
我已經測驗了以下內容,它有效:
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);
});
您可以按照這些說明獲取 Youtube API 的 API 密鑰。如果您在本地或您控制的任何域中運行此實體,則可以將 Referer 域設定為例如 http://localhost。只需將您的域 URL 替換為 http://localhost 或其他任何內容,并將您的 API 密鑰替換為 Google 提供給您的 API 密鑰。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315652.html
上一篇:在nodejs中設定每次呼叫超時
