Puppeteer парсинг: headless Chrome в Node.js

Puppeteer управляет Chromium из Node.js для парсинга SPA. Сравниваем с Playwright и Selenium, плюсы экосистемы и когда лучше другой инструмент.

← Все статьи

puppeteer парсинг

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

puppeteer парсинг

Кратко

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

Инфографика: Node-скрипт → Chromium → перехват сети / DOM → структурированный JSON.

Типовые задачи

ЗадачаПодходСложностьКогда не подходит
Снять карточки SPAgoto + $$evalСредняяДанные в первом HTML
Перехват APIpage.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

  1. Стек уже Node/TypeScript.
  2. Цель стабильно открывается в Chromium.
  3. Нужны скрипты рендера в CI/воркерах на Node.
  4. Данные удобнее из XHR, чем из DOM.
  5. Объём умеренный, есть бюджет на браузеры.

Сравнение

КритерийPuppeteerPlaywrightCheerio
Рендер JSДаДаНет
БраузерыChromium-фокусChromium/FF/WebKit
Типичный стекNodeNode/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.