通过 puppeteer 点击 "load more" 按钮

Clicking on "load more" button via puppeteer

我是 JS 新手。我需要解析来自 Instagram 的评论,但首先我需要加载它们。我在 Node.js 中使用 Puppeteer,所以我写了这段代码:

await page.evaluate(() => {
    while(document.querySelector('main').querySelector('ul').querySelector('button'))
      document.querySelector('main').querySelector('ul').querySelector('button').click()
  })

它什么都不做,开始无限循环。我试图在循环内超时等等...... 我希望该代码将检查此按钮是否存在以及是否为真 - 在它存在时单击()加载越来越多的评论。 我无法理解我做错了什么。

在此处查看我对与此问题非常相似的问题的回答:

您应该能够将其应用于查找并持续点击您的 "load more" 按钮。

而不是使用 while() loop, you can use 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);
  });
});