puppeteer page.evaluate returns 一个空对象

puppeteer page.evaluate returns an empty object

我正在尝试使用 page.evaluate 方法从网站上抓取价格元素,但当我 console.log 结果时,它总是 returns {}。这是代码:

const browser = await pptr.launch()
const page = await browser.newPage()
await page.goto("url")
const price = await page.evaluate(() => {
    return document.querySelector("selector")
})
console.log(price) // returns {}

我也尝试过使用 page.$(selector),它 returns 一个包含 ElementHandle 的数组和一堆我不完全理解它们是什么的东西

谢谢!

您正在尝试将元素句柄从浏览器传递到您的 puppeteer 应用程序。要从浏览器 puppeteer 传输数据,请使用 JSON.stringify 并将元素句柄转换为空对象。

您可以尝试将其他内容传回您的应用程序,例如元素的文本内容。

const browser = await pptr.launch()
const page = await browser.newPage()
await page.goto("url")
const price = await page.evaluate(() => {
    return document.querySelector("selector").textContent
})
console.log(price)