node.js - Nodejs/Puppeteer - 如何使用 page.evaluate

标签 node.js puppeteer

我知道这是一个菜鸟问题,但我想知道什么时候应该使用 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);
});

请参阅下面的简化图:

Puppeteer page.evaluate() Diagram

关于node.js - Nodejs/Puppeteer - 如何使用 page.evaluate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52045947/

相关文章:

python - npm 错误!吉普 错误!堆栈错误: Could not find any Visual Studio installation to use

javascript - 多个选择器上的 Puppeteer waitForSelector

dart - 使用 puppeteer 获取源 html

node.js - Mongoose 中的子文档和嵌套对象有什么区别?

javascript - 在express.js中,res.render()不起作用

node.js - Letsencrypt 问题:请求消息格式错误::创建新的 authz::DNS 名称没有足够的标签时出错

javascript - CRONTAB 执行 Python,使用 puppeteer 执行 Node 来进行网页抓取不起作用

javascript - Puppeteer 获取所有 <a> href 链接

node.js - puppeteer 师 : take webpage screenshot with zoom (scale)

javascript - 在 MySQL 数据库中使用点 - 使用 Node 更新