通过操纵up点击“加载更多”按钮

时间:2018-11-19 13:13:51

标签: javascript node.js google-chrome-devtools puppeteer headless-browser

我是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()会加载越来越多的注释。 我听不清我在做什么错。

2 个答案:

答案 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);
  });
});