我正在尝试使用 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/