Node.js 在抓取Youtube播放列表时未定义木偶演员

Node.js 在抓取Youtube播放列表时未定义木偶演员,node.js,youtube,puppeteer,Node.js,Youtube,Puppeteer,我正在使用木偶演员从YouTube播放列表中抓取数据,但无法获得任何数据。 我尝试过使用浏览器和查询选择器编写代码,但希望自动化此过程并生成json文件作为此过程的输出 代码 结果 begin after newPage after goto after waitForSelector items undefined 与broswer来自同一选择器的屏幕截图 根据文档,各种eval函数只能粗略地传输可序列化的数据,JSON可以处理这些数据,还可以进行一些添加。您的代码返回一个DOM元素

我正在使用木偶演员从YouTube播放列表中抓取数据,但无法获得任何数据。 我尝试过使用浏览器和查询选择器编写代码,但希望自动化此过程并生成json文件作为此过程的输出

代码

结果


begin
after newPage
after goto 
after waitForSelector 
items undefined
与broswer来自同一选择器的屏幕截图


根据文档,各种eval函数只能粗略地传输可序列化的数据,JSON可以处理这些数据,还可以进行一些添加。您的代码返回一个DOM元素数组,这些元素不可序列化,它们具有方法和循环引用。尝试在浏览器上下文中检索数据,并仅返回可序列化的数据。例如:

return rows.maprow=>[row.innerText,row.href];
$$eval应返回可序列化的内容。当前您尝试返回DOM元素。如果希望在NodeJS环境中包含这些元素,请使用$$。它似乎无法作为console.log not called工作@Sirko u说它返回可序列化的,但我没有定义,我说你应该返回可序列化的。基本上,通过JSON.stringify传递任何有意义的内容。DOM元素不能像那样序列化,所以我假设这就是问题所在。在9点35分使用eval并获得数据OK,这部分只是猜测,但你也可以在视频中看到,他没有得到任何有意义的结果。我检查了您正在使用的播放列表和选择器,在我的浏览器中,它们没有返回任何结果。也许问题出在选择器上?它起作用了。但是为什么不显示console.log消息?console.log在页面内部。在浏览器上下文中调用了$$eval,因此它在浏览器DevTools控制台中输出其数据。您能推荐一个资源来处理木偶吗?对不起,我只使用了并且仍然使用了它的文档:

begin
after newPage
after goto 
after waitForSelector 
items undefined