我是JS新手。我需要解析来自Instagram的评论,但首先我需要全部加载它们。我在Node.js中使用Puppeteer,所以我写了这段代码:
await page.evaluate(() => {
while(document.querySelector('main').querySelector('ul').querySelector('button'))
document.querySelector('main').querySelector('ul').querySelector('button').click()
})
它什么都不做,并开始无休止的循环。我试图在循环内进行超时等等。 我希望代码将检查此按钮是否存在以及是否为真-当它存在时,单击它的click()会加载越来越多的注释。 我听不清我在做什么错。
答案 0 :(得分:0)
在这里,我对这个问题的回答非常相似:
Puppeteer / Node.js to click a button as long as it exists -- and when it no longer exists, commence action
您应该可以将其应用于查找并持续单击“加载更多”按钮。
答案 1 :(得分:0)
您可以使用while()
而不是使用setInterval()
循环来在加载注释时将每次迭代的速度降低到更可管理的速度:
await page.evaluate(async () => {
await new Promise((resolve, reject) => {
const interval = setInterval(() => {
const button = document.querySelector('main ul button');
if (button !== null) {
button.click();
} else {
clearInterval(interval);
resolve();
}
}, 100);
});
});