Перейти к основному содержимому

Создание скриншотов с помощью Puppeteer

Прямое использование Puppeteer

подсказка

Для запуска этого примера на платформе Apify выберите образ apify/actor-node-puppeteer-chrome в вашем Dockerfile.

В этом примере показано, как сделать скриншот веб-страницы с помощью Puppeteer. Тот же результат можно получить, используя Playwright.

Использование utils.puppeteer.saveSnapshot():

Run on
import { launchPuppeteer, utils } from 'crawlee';

const url = 'http://www.example.com/';
// Запускаем браузер
const browser = await launchPuppeteer();

// Открываем новую вкладку в браузере
const page = await browser.newPage();

// Переходим на URL
await page.goto(url);

// Создаем скриншот
await utils.puppeteer.saveSnapshot(page, { key: 'my-key', saveHtml: false });

// Закрываем Puppeteer
await browser.close();

Использование PuppeteerCrawler

Этот пример демонстрирует создание скриншотов нескольких веб-страниц с помощью PuppeteerCrawler:

Использование контекстно-зависимой утилиты saveSnapshot():

Run on
import { PuppeteerCrawler } from 'crawlee';

// Создаем PuppeteerCrawler
const crawler = new PuppeteerCrawler({
async requestHandler({ request, saveSnapshot }) {
// Преобразуем URL в допустимый ключ
const key = request.url.replace(/[:/]/g, '_');
// Создаем скриншот
await saveSnapshot({ key, saveHtml: false });
},
});

await crawler.addRequests([
{ url: 'http://www.example.com/page-1' },
{ url: 'http://www.example.com/page-2' },
{ url: 'http://www.example.com/page-3' },
]);

// Запускаем краулер
await crawler.run();

Для создания полного скриншота страницы с помощью Puppeteer необходимо передать параметр fullPage со значением true в метод screenshot(): page.screenshot({fullPage: true})

В обоих примерах с использованием page.screenshot() создается переменная key на основе URL веб-страницы. Эта переменная используется в качестве ключа при сохранении каждого скриншота в хранилище ключ-значение.