Puppeteer 中的 pageFunction returns 空对象
pageFunction in Puppeteer returns empty object
我在 Puppeteer 中使用 page.$eval
,但我不知道为什么 pageFunction
会 return 对象不为空时的空对象。这是一个代码示例:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({
headless: false,
slowMo: 1000
});
const page = await browser.newPage();
await page.goto('https://www.google.com/search?q=news');
const result1 = await page.$eval('#resultStats', elem => elem.textContent)
console.log('result1', result1); // returns 'About 2,890,000,000 results (0.45 seconds)'. This is expected behavior straight from puppeeteer docs
const result2 = await page.$eval('#resultStats', elem => elem)
console.log('result2', result2); // returns and empty object. Why? I would have expected to see a DOM Node Object here
await browser.close();
})();
如何将整个元素返回到 result2 中?
我不明白 pageFunction
函数是 Chromium 本身的 运行,所以在返回 elem => elem
的第二个示例中,它实际上返回了一个活动的 NodeList 集合到木偶师。
但是从 Chromium 返回一个实时的 NodeList 集合到 puppeteer 是不可能的,因为 Puppeteer 将数据传入和传出 Chromium 的方式必须通过 JSON.stringify
/ JSON.parse
序列化。当 Puppeteer 在实时 NodeList 上运行 JSON.stringify
时,我相信它 returns 是一个空对象。
好吧,正如你所说,above.You 可以在求值函数 function.But 中得到 dom 节点,而当你 return 从求值函数中获取 dom 节点时, puppeteer 会处理你的数据 returned.So 你无法获取形容词数据。
我在 Puppeteer 中使用 page.$eval
,但我不知道为什么 pageFunction
会 return 对象不为空时的空对象。这是一个代码示例:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({
headless: false,
slowMo: 1000
});
const page = await browser.newPage();
await page.goto('https://www.google.com/search?q=news');
const result1 = await page.$eval('#resultStats', elem => elem.textContent)
console.log('result1', result1); // returns 'About 2,890,000,000 results (0.45 seconds)'. This is expected behavior straight from puppeeteer docs
const result2 = await page.$eval('#resultStats', elem => elem)
console.log('result2', result2); // returns and empty object. Why? I would have expected to see a DOM Node Object here
await browser.close();
})();
如何将整个元素返回到 result2 中?
我不明白 pageFunction
函数是 Chromium 本身的 运行,所以在返回 elem => elem
的第二个示例中,它实际上返回了一个活动的 NodeList 集合到木偶师。
但是从 Chromium 返回一个实时的 NodeList 集合到 puppeteer 是不可能的,因为 Puppeteer 将数据传入和传出 Chromium 的方式必须通过 JSON.stringify
/ JSON.parse
序列化。当 Puppeteer 在实时 NodeList 上运行 JSON.stringify
时,我相信它 returns 是一个空对象。
好吧,正如你所说,above.You 可以在求值函数 function.But 中得到 dom 节点,而当你 return 从求值函数中获取 dom 节点时, puppeteer 会处理你的数据 returned.So 你无法获取形容词数据。