javascript - page.evaluate 中的 puppeteer 引用错误

标签 javascript node.js web-scraping puppeteer

嗨,我正在学习 puppeteer headless 浏览器,但有些东西我不明白

1) 为什么我不能使用变量作为选择器?

这行得通

  const lastUpdate = await page.evaluate(() => document.querySelector('body > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(3) > td:nth-child(2) > strong').textContent);

但这给我引用错误 LAST_UPDATE SELECTOR is not defined

const LAST_UPDATE_SELECTOR = 'body > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(3) > td:nth-child(2) > strong';
const lastUpdate = await page.evaluate(() => document.querySelector(LAST_UPDATE_SELECTOR).textContent);

我做错了什么?也许我需要学习一些新东西

谢谢!

最佳答案

将变量作为参数传递给 evaluate 函数。

const selector = '#someSelector';

// 2. read the passed data
const lastUpdate = await page.evaluate((selector) => { 

  // 3. use it here
  document.querySelector(selector).textContent, 

// 1. Pass it here
}, selector); 

这是怎么回事?

.evaluate接受两个参数,pageFunction,其余为序列化的args。运行 pageFunction 时,它将参数传递给它,然后它在浏览器上下文中变得可用。

在 puppeteer 上了解更多信息 API docs .

关于javascript - page.evaluate 中的 puppeteer 引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925586/

相关文章:

javascript - 在 JavaScript 中使用鼠标事件在 Canvas 上绘制直线

javascript - 从 gulp 任务运行 Node js 脚本

javascript - 尝试将 Braintree 嵌套回调转换为 NodeJS 异步/等待语法

node.js - Nodejs : sharing session across meteor and express app running as separate instances

google-chrome - 如何在 Chrome 中获取 CSS 选择器?

python - 改进 python 代码片段

javascript - 在JS中获取客户端时区(不是GMT偏移量)

javascript - 放大弹出窗口中的混合内容类型

javascript - 如何获取用 iso-8859-1 编码的页面标题,以便标题在我的 utf-8 网站中正确显示?

javascript - JS 正则表达式从字符串中删除 IMG 标签