Puppeteer парсинг — автоматизация Chromium через DevTools Protocol из Node.js: открыть страницу, дождаться селектора, снять HTML или перехватить сеть. Рядом стоит Playwright; для статичного HTML в Node хватает Cheerio. Ниже — задачи, код и сравнение.

Кратко
- Puppeteer заточен под Chromium/Chrome и npm-экосистему.
- Удобен для SPA, скриншотов, PDF, network intercept.
- На новых проектах часто сравнивают с Playwright.
- Масштабирование = пул браузеров + очередь задач.
- После
page.content()часто идут Cheerio/селекторы.

Инфографика: Node-скрипт → Chromium → перехват сети / DOM → структурированный JSON.
Типовые задачи
| Задача | Подход | Сложность | Когда не подходит |
|---|---|---|---|
| Снять карточки SPA | goto + $$eval | Средняя | Данные в первом HTML |
| Перехват API | page.on(‘response’) | Средняя | Нет JSON в ответах |
| Скриншот отчёта | page.screenshot | Низкая | — |
| Высокий параллелизм | Cluster / очередь | Высокая | Малый бюджет на CPU |
Пример кода: $$eval полей
import puppeteer from "puppeteer";
async function scrape(url) {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setUserAgent("ResearchBot/1.0");
await page.goto(url, { waitUntil: "networkidle2", timeout: 30000 });
await page.waitForSelector(".product-card");
const items = await page.$$eval(".product-card", (cards) =>
cards.map((card) => ({
title: card.querySelector("h2")?.textContent?.trim() ?? "",
price: card.querySelector(".price")?.textContent?.trim() ?? "",
href: card.querySelector("a")?.href ?? "",
}))
);
await browser.close();
return items;
}
scrape("https://example.com/catalog").then(console.log);
Когда брать Puppeteer
- Стек уже Node/TypeScript.
- Цель стабильно открывается в Chromium.
- Нужны скрипты рендера в CI/воркерах на Node.
- Данные удобнее из XHR, чем из DOM.
- Объём умеренный, есть бюджет на браузеры.
Сравнение
| Критерий | Puppeteer | Playwright | Cheerio |
|---|---|---|---|
| Рендер JS | Да | Да | Нет |
| Браузеры | Chromium-фокус | Chromium/FF/WebKit | — |
| Типичный стек | Node | Node/Python/др. | Node + HTTP |
| Стоимость CPU | Высокая | Высокая | Низкая |
Ограничения
Puppeteer не обходит антибот «из коробки». Селекторы ломаются при редизайне. Для облака смотрите Apify и Crawlee.
Когда не подходит
Статичный HTML — Cheerio. Мультибраузер + Python — Playwright. Без кода — Octoparse/ParseHub.
FAQ
Puppeteer vs Playwright в 2026?
Playwright чаще для новых мультибраузерных проектов; Puppeteer силён в Node/Chromium.
Нужен ли Stealth-плагин?
Он не делает сбор легальным. Сначала оцените API и правила сайта.
Где запускать в проде?
Контейнеры Chromium, лимиты параллелизма, очередь и алерты на селекторы.
Помощь с контуром: парсинг сайтов. Серия: Playwright, Cheerio.
