仅在 page.goto(url) 实际加载页面时执行 page.evaluate()

Only perform page.evaluate() when page.goto(url) actually loads the page

我创建了一个抓取工具,该网站 https://www.sportstoto.com.my/results_past.asp?date=M/DD/yyyy
(例如 https://www.sportstoto.com.my/results_past.asp?date=5/1/2021

我的代码,接受开始和结束月份,并遍历每个月的每一天都有乐透结果,然后具体到每个结果的 URL,例如https://www.sportstoto.com.my/popup_past_results.asp?drawNo=5277/21 and scrapes the result to be returned in JSON format. All works except for one particular month, https://www.sportstoto.com.my/results_past.asp?date=6/6/2021 每个可点击的结果都不会提示一个新页面,而是一个弹出式警报。

如果 page.goto(url) 实际上不呈现页面但我不想执行 page.evaluate 如何编写我的代码来处理此问题调用弹出窗口

 const finalUrl = result_url + drawNum;
  // await page.goto(finalUrl, {waitUntil: 'load', timeout: 0});
  await page.goto(finalUrl, {waitUntil: 'load'});
  
  const data = await page.evaluate(() => {
    let root_url = "https://www.sportstoto.com.my/";
    const results = {};
    const drawDetails = Array.from(document.querySelectorAll('div#popup_container * span.txt_black6')).map(e => e.innerText);

感谢并期待一些建议或指导。

菲尔

您可以使用page.on("dialog")page.on("domcontentloaded")来处理不同的页面事件。参考:https://pptr.dev/#?product=Puppeteer&version=v9.1.1&show=api-event-dialog