transcend
@transcend

Как сделать скриншоты нескольких сайтов с помощью puppeteer?

Добрый день, есть функция puppeteer для создания скриншота веб-страницы.

const puppeteer = require('puppeteer');
const siteURL = 'http://example.com'

async function getPic() {
  const browser = await puppeteer.launch(); 
  const page = await browser.newPage();
  await page.setViewport({width: 1600, height: 1200});
  await page.goto(siteURL,{ waitUntil: 'networkidle2' });
  await page.screenshot({path: '__PNG.png', fullPage: true});
  await browser.close();
}


Каким образом сделать так, чтобы можно было передать в функцию массив сайтов (например 5) и функция последовательно сделала скриншот каждого из сайтов?
  • Вопрос задан
  • 22 просмотра
Пригласить эксперта
Ответы на вопрос 1
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
const puppeteer = require('puppeteer');
const siteURLs = ['http://example0.com', 'http://example1.com', 'http://example2.com'];

function makeScreenshotFromSite(url, page) {
   return page.setViewport({width: 1600, height: 1200})
     .then(() => {
       return page.goto(siteURL,{ waitUntil: 'networkidle2' });
     })
     .then(() => {
        return page.screenshot({path: '__PNG.png', fullPage: true});
     });
};

async function start(sites) {
  const browser = await puppeteer.launch(); 
  const page = await browser.newPage();
  const someRes = await Promise.all(
     sites.map(makeScreenshotFromSite)
  );
  await browser.close();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы