这是yt注解
的开发控制台
"我想展示拉图叔叔"
这是我的输出
我试着抓取YouTube的评论部分,但我面临着一个问题,而这样做。
这是我试过的
const express=require('express');
const app=express();
const cheerio=require('cheerio');
const axios=require('axios');
const url='https://www.youtube.com/watch?v=d2Dw-PuNZSE';
axios(url).then(response=>{
const html=response.data;
// console.log(html);
const $=cheerio.load(html);
const ytdata=[];
$('.ytd-comment-renderer',html).each(function(){
const author=$(this).find('div#header-author h3 a').text();
ytdata.push({
author
})
})
console.log(ytdata);
}).catch(err=>console.log("This is an error"+err))
app.listen(8080,()=>{
console.log("Listening on port 8080");
})
"我想展示拉图叔叔"
1条答案
按热度按时间jjjwad0x1#
你的代码的问题是你的
html
缺少div#header-author
。这是因为Youtube动态加载数据,所以你不能轻松地擦除它。我的建议是要么使用puppeteer(但Youtube可能会很快找到你的机器人并阻止你),要么使用自定义的擦除器。例如,作为Web Scraping API的一名工程师,您可以通过以下方式将我们的解决方案集成到您的脚本中,并获得所需的结果:
使用第三方scraper的好处是它提供了IP轮换、各种代理类型等功能,使Youtube更难检测到bot。或者,您可以在您的项目中使用
puppeteer
,如下所示: