【问题标题】:puppeteer reference error in page.evaluatepage.evaluate 中的 puppeteer 引用错误
【发布时间】:2018-04-19 16:06:44
【问题描述】:

你好,我正在学习 puppeteer 无头浏览器,但有些东西我不明白

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

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

谢谢!

【问题讨论】:

    标签: javascript node.js web-scraping puppeteer


    【解决方案1】:

    将变量作为参数传递给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 上了解更多信息。

    【讨论】:

    • 这行得通,如何调用这种传递参数的方式?我想了解更多谢谢!
    • Evaluation failed: SyntaxError: Invalid left-hand side in assignment -- 这就是我按照这个例子得到的。
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 2020-07-20
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多