NodeJS | Как сделать скриншот страницы сайта через сервер?

NodeJS | Как сделать скриншот страницы сайта через сервер?

Чтобы делать скриншоты сайтов при помощи NodeJS, у нас должен быть установлен пакет Puppeteer. Эту установку мы делаем через пакетный менеджер NPM.

В операционной системе (например, Debian) должен быть установлен безголовый браузер Google Chrome, при помощи которого Puppeteer ведёт свою работу.

Сам код обычного приложения будет выглядеть примерно так:

 

 

const puppeteer = require(‘puppeteer’);

 

let options = {

    headless: true, // default is true

    args: [«—no-sandbox»]

};

 

(async () => {

    const browser = await puppeteer.launch(options);

    const page = await browser.newPage();

    await page.goto(‘https://efim360.ru’);

    await page.screenshot({ path: `screenshot-from-nodejs-${Date.now()}.png` });

    await browser.close();

})();

 

Спустя какое-то время запрос на сайт будет выполнен и скриншот будет сделан для окна браузера размером 800 х 600 пикселей. По умолчанию скриншот создаётся в этом размере.

Файл сохранится в директорию пользователя, от имени которого вызывался скрипт. За путь сохранения файла отвечает интерфейс ScreenshotOptions. Если изменить значение свойства path, то можно указать свой путь до директории на сервере.

Если необходимо изменить размеры окна, то нужно заранее указать значения в свойствах браузера. За эти параметры отвечает интерфейс Viewport и его свойства height и width.

 

const puppeteer = require(‘puppeteer’);

 

let options = {

    headless: true, // default is true

    args: [«—no-sandbox»]

};

 

(async () => {

    const browser = await puppeteer.launch(options);

    const page = await browser.newPage();

    await page.setViewport({

        width: 1920,

        height: 1080

    });

    await page.goto(‘https://efim360.ru’);

    await page.screenshot({ path: `screenshot-from-nodejs-${Date.now()}.png` });

    await browser.close();

})();

 

 

Информационные ссылки

Стандарт NodeJShttps://nodejs.org/api/

Стандарт Puppeteerhttps://pptr.dev