Puppeteer-仅在存在的情况下单击按钮

问题描述 投票:0回答:1

我正在尝试使用Puppeteer在Node中创建一个webscrapper。我的第一个挑战(我认为这很容易),通过“加载更多”按钮分页传递。

但是,当我运行以下代码时,Puppeteer单击所有“加载更多”,然后单击内容后,我需要停止单击。

为什么会这样?

    let loadMore = true;

    while (loadMore) {
        selector = 'ul.pager > li > a.button';

        await page.waitForSelector(selector, { timeout: 600 }).then(() => {
            page.click(selector);
        }).catch(() => {
            loadMore = false;
        });
    }

全部感谢!

javascript while-loop click puppeteer
1个回答
0
投票

我会这样做。我认为这里的超时没有什么区别,如果if条件中的await不够,那么脚本可能存在其他问题。

let loadMore = true;
while (loadMore) {
  const selector = 'ul.pager > li > a.button';

  if ((await page.$(selector)) !== null) {
    await page.click(selector);
  } else {
    loadMore = false;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.