【发布时间】:2022-01-23 07:11:49
【问题描述】:
我有这样的代码来收集有关页面上所有项目列表的信息并返回它们:
const resultsArr = await page.$$eval('.result-row', elements =>
elements.map(el => {
return {
price: await page.eval('how do I search within the element el?')
}
})
);
在 chrome 控制台中测试我可以获取元素并执行类似的操作
elements[0].find('.result-price')[0].innerHTML // returns '$1,500'
我很难将我的 jquery 翻译成 puppeteer。问题是,在上面的例子中,如何从元素el 中搜索并返回数据?
【问题讨论】:
-
嵌套
page函数是不可能的,因为eval回调在浏览器中运行,而page不存在。您可能会混淆浏览器控制台中执行的内容和 Node 中执行的内容。使用像document.querySelector这样的本机浏览器函数在eval块内进行搜索——您在控制台中运行的相同代码应该可以工作。如果您不介意分享您想要完成的工作的网站和上下文,我可以提供一个不那么随意的答案。 -
谢谢@ggorlen,我会在这里使用本机浏览器功能。我接受的答案以这种方式解决了它并且有效。