【问题标题】:Puppeteer page.$eval throws an error if element with selector wasn't found如果找不到带有选择器的元素,Puppeteer page.$eval 将引发错误
【发布时间】:2020-10-01 22:51:41
【问题描述】:

我正在做一个分几页的网络爬虫。我想知道当我的选择器在当前页面中不存在时是否可以忽略引发的错误。大多数时候,.lot-page__lot__sold 存在,但有时不存在,这会给我一个错误

错误提示:

UnhandledPromiseRejectionWarning:错误:错误:找不到元素 匹配选择器“.lot-page__lot__sold”

 const rawSoldPrice = await page
    .$eval(".lot-page__lot__sold", (text) => text.textContent)
    .catch((err) => true);

我应该在代码中更改什么?

【问题讨论】:

    标签: javascript node.js web-scraping puppeteer


    【解决方案1】:

    请改用page.evaluate,因为page.$eval 绝对需要该元素存在。

    const elementTextContent = await page.evaluate(() => {
      const element = document.querySelector('.lot-page__lot__sold')
      if (element) {
        return element.textContent
      }
    
      return '';
    })
    

    【讨论】:

      猜你喜欢
      • 2019-07-24
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 2019-11-20
      相关资源
      最近更新 更多