我使用Puppeteer来抓取几个网页。
我的想法是打开几个标签(使用命令" browser.newPage()"),然后将几个X链接传递给这些页面,以便并行化工作。
问题是,有时程序运行正常,有时它没有(程序卡住,页面错误超时被抛出)。
我的想法是,我可能在处理承诺时做错了什么,但我无法理解问题所在。 我按照我在此link创建的代码示例。
const promises=[];
let totBrowserInstances = 3;
//instancesLinksMatrix[totBrowserInstances][linksToScrape]
// matrix where all the links to scrape are stored, it is created in previous part of the code;
for(let i=0; i<totBrowserInstances; i++){
console.log('Page ID Spawned', i);
promises.push(browser.newPage()
.then(async (page) => {
for(let j=0; j<instancesLinksMatrix[i].length; j++){
await page.goto(instancesLinksMatrix[i][j], {waitUntil: 'domcontentloaded'}); // start as soon as the DOM is ready
await page.evaluate(() => {
return document.querySelector('.competizione .pagina h3').innerText;
}).then((result) => {
console.log('response: ' + result);
});
}
}));
}
await Promise.all(promises);