roi*_*tmi 2 javascript node.js puppeteer
我正在从 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()
Run Code Online (Sandbox Code Playgroud)
PyS*_*aad 11
下面的代码你可以尝试等待 -
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.
}
}
Run Code Online (Sandbox Code Playgroud)
参考:
尝试下面的代码,只需添加一个timeout选项
try {
await page.waitForSelector("yt-formatted-string.count-text.style-scope.ytd-comments-header-renderer", {timeout: 5000 }); // 5s timeout
} catch (e) {
// something wrong !!!!!!
}
let commentCount = await (await (await page.$("yt-formatted-string.count-text.style-scope.ytd-comments-header-renderer")).getProperty("textContent")).jsonValue()Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |