我知道这是一个菜鸟问题,但我想知道什么时候应该使用 page.evaluate
我也知道文档存在,但我还是不明白
谁能解释一下在使用 puppeteer 创建爬虫时如何以及何时使用此功能?
最佳答案
首先,重要的是要了解有两个主要环境:
- Node.js (Puppeteer) 环境
- 页面 DOM 环境
你应该使用 page.evaluate()
当您寻求通过传递函数并返回 <
直接在页面 DOM 环境中与页面交互时 Promise
<
Serializable
>>
解析为传递函数的返回值。
否则,如果你不使用page.evaluate()
,您将处理元素作为 ElementHandle
Node.js (Puppeteer) 环境中的对象。
示例用法:
const example = await page.evaluate(() => {
const elements = document.getElementsByClassName('example');
const result = [];
document.title = 'New Title';
for (let i = 0; i < elements.length; i++) {
result.push(elements[i].textContent);
}
return JSON.stringify(result);
});
请参阅下面的简化图:
关于node.js - Nodejs/Puppeteer - 如何使用 page.evaluate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52045947/