javascript - 如果找不到带有选择器的元素,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);
我应该在代码中更改什么?
解决方案
改为使用page.evaluate
,因为page.$eval
绝对需要元素存在。
const elementTextContent = await page.evaluate(() => {
const element = document.querySelector('.lot-page__lot__sold')
if (element) {
return element.textContent
}
return '';
})
推荐阅读
- rest - 过度获取究竟是什么意思?
- sql - 如何通过输入多个副本在Access中制作整行的多个副本?
- mysql - 为什么这个 SQL 代码不能在 WHERE EXISTS 构造中使用简单的谓词?
- docker - 使用 nginx 代理传递到子目录
- javascript - html代码中botton的id变了不知道为什么
- linux - 为什么在扩展 bash 命令的更改中需要引号?没有引号似乎可以正常工作
- button - 具有唯一文件名 + 电子邮件的提交按钮
- javascript - 控制台中的 ERR_FILE_NOT_FOUND 但应用程序正常工作
- python - StandardScaler.inverse_transform() 返回与输入相同的数组:/ sklearn 坏了还是我?
- python - 报纸示例中的作者提取不起作用