javascript - 使用 puppeteer 返回具有相同选择器的 div 列表

标签 javascript node.js puppeteer

我正在尝试使用 puppeteer 获取 div 列表,但我的代码返回一个空数组。

从这个网站,我试图检索所有汽车的列表。

https://master.d1v85iiwii35dx.amplifyapp.com/

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://master.d1v85iiwii35dx.amplifyapp.com/');
  console.log('.....going to url')
  const feedHandle = await page.$('.car-list-parent');

 const arr= await feedHandle.$$eval('.car-list-child',(nodes)=>nodes.map(n=>
            {
               
                return n
            }))

  await browser.close();
})();

最佳答案

不幸的是,.evaluate().$$eval() 以及类似的只能传输可序列化的值(大致来说,JSON 可以处理的值)。由于 DOM 元素不可序列化(它们包含方法和循环引用),因此集合中的每个元素都会被替换为空对象或 undefined object 。您需要返回可序列化的值(例如,文本数组)或使用类似 page.evaluateHandle() 的值。和 JSHandle API。

第一个选项:

const arr= await feedHandle.$$eval(
  '.car-list-child',
  nodes => nodes.map(n => n.innerText)
);
console.log(arr);

关于javascript - 使用 puppeteer 返回具有相同选择器的 div 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67527026/

相关文章:

javascript - array 值未在 nodejs 中的 for 循环中更新

mysql - 如何将 MySQL 数据库中的数据放入 snake case 中,并使用 express 将其放入 ejs 列表中每个项目的值字段中

javascript - Puppeteer 从外部 .js 文件调用 javascript 函数

javascript - 在 Puppeteer 中排除具有某些类的元素

javascript - 如何通过同一个流发送不同编码的数据?

javascript - 使用 Spark View 引擎的 View 数据调用参数包含引号的 javascript 函数时出现问题

node.js - OpenWhisk 从操作调用 Watson 文本转语音操作

c# - PuppeteerSharp 和页面级代理

javascript - 为什么这个按钮在 IE 中有效,但在 Firefox 中无效?

javascript - Angular 服务和 browserify