page.evaluate中的puppeteer引用错误

问题描述 投票:2回答:2

嗨即时通讯学习木偶无头浏览器,但有一些我不明白的东西

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没有定义

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

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

谢谢!

javascript node.js web-scraping puppeteer
2个回答
5
投票

将变量作为参数传递给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时,它会将参数传递给它,然后在浏览器上下文中变为可用。

在木偶运动员API docs上了解更多相关信息。


-1
投票

你不能使用变量作为选择器,因为它必须是一个String,即带有有效CSS选择器的DOMString,如.querySelector(“#main,#basic,#exclamation”),否则你将收到一个错误。

© www.soinside.com 2019 - 2024. All rights reserved.