Node.js Nodejs/puppeter-如何使用page.evaluate

Node.js Nodejs/puppeter-如何使用page.evaluate,node.js,puppeteer,Node.js,Puppeteer,我知道这是一个noob问题,但我想知道什么时候应该使用page.evaluate 我也知道文档存在,但我仍然不理解 有谁能给我解释一下,在使用木偶演员创建刮板时,如何以及何时使用此功能?首先,重要的是要了解有两个主要环境: Node.js(puppeter)环境 页面DOM环境 当您试图通过传递函数并返回解析为传递函数的返回值的直接在页面DOM环境中与页面交互时,应该使用 否则,如果不使用page.evaluate(),您将在Node.js(puppeter)环境中作为对象处理元素 用法示例

我知道这是一个noob问题,但我想知道什么时候应该使用page.evaluate

我也知道文档存在,但我仍然不理解


有谁能给我解释一下,在使用木偶演员创建刮板时,如何以及何时使用此功能?

首先,重要的是要了解有两个主要环境:

  • Node.js(puppeter)环境
  • 页面DOM环境
当您试图通过传递函数并返回解析为传递函数的返回值的
直接在页面DOM环境中与页面交互时,应该使用

否则,如果不使用
page.evaluate()
,您将在Node.js(puppeter)环境中作为对象处理元素

用法示例:

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);
});
const-example=wait-page.evaluate(()=>{
const elements=document.getElementsByClassName('example');
常量结果=[];
document.title='新标题';
for(设i=0;i
请参见下面的简图:

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);
});

我如何访问此文档变量?我们甚至没有声明:0@JoseLeles:传递给
page.evaluate
的函数在page DOM环境中进行评估,基本上就像打开开发人员工具控制台并从那里运行代码一样。在那里,
document
是可用的,但是如果你试图接触到外部并使用木偶剧脚本其余部分中的其他内容,它就不会在那里。