首页 > 解决方案 > 如果找不到带有选择器的元素,Puppeteer page.$eval 会抛出错误

问题描述

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

错误说:

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

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

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

标签: javascriptnode.jsweb-scrapingpuppeteer

解决方案


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

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

  return '';
})

推荐阅读