Я пытаюсь создать скрипт, который берет список URL-адресов, переходит на сайт и делает снимок экрана.
Мне удалось заставить это работать с кукловодом. Однако проблема, с которой я столкнулся, заключается в том, что, когда я скажу 50 URL-адресов в списке, он попытается запустить кукольные сеансы для всех из них одновременно, что означает, что большинство времени истекает до загрузки сайта, и он может сделать снимок экрана.
Я обнаружил, что могу успешно запустить 10 сразу, поэтому я хочу настроить систему очередей для этого.
parser.on('readable', function(){
while(record = parser.read()){
counter +=1;
console.log(record.URL);
(async (url = record.URL, name = record.shortURL, counter1 = counter) => {
const browser = await puppeteer.launch( {defaultViewport: {width: 1024, height:768} } );
const page = await browser.newPage();
await page.goto(url);
title = await page.title();
domainRegex = /^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)/img;
match = domainRegex.exec(url);
width = 1024;//await page.viewport().width;
height = 1000;//await page.viewport.height();
await page.screenshot({path: "Screenshots/"+counter1+". "+match[1] + "- " +title.replace(/[\W_]+/g,"")+".jpg", clip : {x:0, y:0, width: width, height: height}});
await browser.close();
})();
}
});