我正在从 youtube 上抓取数据并尝试获取评论数量。我试图获取包含该值的元素,但如果视频的注释被禁用,则该元素根本不存在,并且 waitForSelector()
会等待大约 30 秒,然后结束程序。我如何告诉 puppeteer 等待该元素(例如 5 秒),如果它不存在,则继续执行其余代码?
这是我正在使用的代码-
await page.waitForSelector("yt-formatted-string.count-text.style-scope.ytd-comments-header-renderer")
let commentCount = await (await (await page.$("yt-formatted-string.count-text.style-scope.ytd-comments-header-renderer")).getProperty("textContent")).jsonValue()
最佳答案
下面的代码您可以尝试等待 -
await page.waitForSelector(yourSelector, {timeout: TIMEOUT});
例如:
await page.waitForSelector(yourSelector, {timeout: 5000});
更新:
捕获timeouterror
并执行某些操作 -
const {TimeoutError} = require('puppeteer/Errors');
try {
await page.waitForSelector(yourSelector, {timeout: 5000});
} catch (e) {
if (e instanceof TimeoutError) {
// Do something if this is a timeout.
}
}
引用:
关于javascript - 如何在 puppeteer 中等待选择器,但仅等待特定时间段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471687/