使用Puppeteer并行化抓取:在多个页面中打开多个链接

时间:2018-05-15 14:41:12

标签: javascript web-scraping promise es6-promise puppeteer

我使用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);

0 个答案:

没有答案