我在 node.js 上有一个小的 java 脚本,它使用 puppeteer 从 2 个网站抓取数据。循环无限期运行,每 10 秒一次。 我在 headless=false 中工作以查看网页的行为方式。打开时,将打开一个弹出式/模态警告“禁止儿童进入的赌博网站”。我注意到弹出窗口/模式在页面加载后几毫秒打开(惯性/延迟退出)。问题是这个窗口似乎阻止了代码并且找不到“.sc-jQHtVU.sc-bWXABl.gOFGcM.cHHGHO”选择器(实际上在页面上)...... 另一方面,当我手动关闭弹出窗口时(通过用光标单击“拒绝”按钮),代码会找到选择器(即使我只关闭了 2 页上的一个弹出窗口。 所以我修改了我的代码,让它自动关闭弹出窗口。弹出窗口正确关闭但代码返回相同的错误...我什么都不懂,我不知道如何解决这个问题。 这是我的代码,如果有人可以帮助我,请。 PS:也看到了弹出窗口,您可以在隐私选项卡中打开 URL
const puppeteer = require('puppeteer');
const urls = ['https://www.winamax.fr/paris-sportifs/match/34169987','https://www.winamax.fr/paris-sportifs/match/39073593'];
const fs = require('fs');
const tableau_valeurs = [];
const interval = 10000;
(async () => {
const browser = await puppeteer.launch({executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', headless:false, args: ['--incognito','--blink-settings=imagesEnabled=false','--disable-css-animations'],defaultViewport: null});
const pages = await Promise.all(urls.map(async url => {
const page = await browser.newPage();
await page.goto(url, { /*waitUntil: 'networkidle0', */timeout :0, encoding: 'utf-8'});
return page;
}));
// wait time to let the page to fully load
await new Promise(resolve => setTimeout(resolve, 10000));
// method to close the pop up
/*for (const page of pages) {
await page.waitForSelector('.tarteaucitronCTAButton.tarteaucitronDeny, .sc-PJClH.sc-jfdOKL.sc-fmGnzW.sc-eoXOpV.sc-kMizLa HcSjC.euooKa.dWNwst.dtmNbI.casXlC');
await page.click('.tarteaucitronCTAButton.tarteaucitronDeny, .sc-PJClH.sc-jfdOKL.sc-fmGnzW.sc-eoXOpV.sc-kMizLa HcSjC.euooKa.dWNwst.dtmNbI.casXlC');
}
// wait time to let the pop up close
await new Promise(resolve => setTimeout(resolve, 6000));*/
while (true) {
await Promise.all(pages.map(async page => {
let equipeA = await page.$eval('.sc-jQHtVU.sc-bWXABl.gOFGcM.cHHGHO', el => el.textContent.trim());
const now = new Date();
tableau_valeurs.push(`${now}/${equipeA}`); // forme le tableau qui contient toutes les chaines de caractères scrappées
fs.appendFileSync(`C:\\Users\\Utilisateur\\Desktop\\Charme_Chroma\\${equipeA}.csv`, tableau_valeurs.join('\n') + '\n', { encoding: 'utf-8', flag: 'a' });
console.log(`Dernier élément ajouté au tableau de valeurs: ${tableau_valeurs[tableau_valeurs.length - 1]}`);
tableau_valeurs.length = 0; // Vider le tableau pour la prochaine boucle
}));
await new Promise(resolve => setTimeout(resolve, interval));
}
await browser.close();
})();
自动关闭弹出窗口但它不起作用