Cheerio парсинг — разбор HTML в Node.js API, похожим на jQuery, без запуска браузера. Как и Beautiful Soup, сам в сеть не ходит: нужен fetch/axios. Для SPA — Puppeteer или Playwright. Ниже — задачи, код и таблицы.

Кратко
- Cheerio = серверный HTML-парсер для Node без JS-рендера.
- Идеален для статичных страниц, SSR и HTML-дампов.
- Часто ставят после Puppeteer: content → Cheerio.
- Очереди и ретраи — сами или через Crawlee.
- Селекторы хрупки к редизайну.

Инфографика: строка HTML → CSS-селекторы Cheerio → строки данных.
Типовые задачи
| Задача | Подход | Сложность | Когда не подходит |
|---|---|---|---|
| Парсинг SSR-каталога | fetch + cheerio.load | Низкая | Пустой клиентский DOM |
| Разбор после Puppeteer | page.content() → cheerio | Низкая | — |
| Батч из файлов HTML | fs.readFile + cheerio | Низкая | — |
| Долгий краул с ретраями | Crawlee CheerioCrawler | Средняя | Голый цикл без очереди |
Пример кода: fetch + селекторы
import * as cheerio from "cheerio";
async function scrape(url) {
const res = await fetch(url, {
headers: { "User-Agent": "ResearchBot/1.0" },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const html = await res.text();
const $ = cheerio.load(html);
return $(".product-card")
.map((_, el) => ({
title: $(el).find("h2").text().trim(),
price: $(el).find(".price").text().trim(),
href: $(el).find("a").attr("href") ?? "",
}))
.get();
}
scrape("https://example.com/catalog").then(console.log);
Когда подходит
- Стек Node/TypeScript, данные в HTML ответа.
- Нужна скорость на тысячах простых страниц.
- Команда привыкла к CSS/jQuery-селекторам.
- Бюджет не тянет пул headless-браузеров.
- Есть стабильные селекторы или микроразметка.
Сравнение
| Критерий | Cheerio | Beautiful Soup | Puppeteer |
|---|---|---|---|
| Язык | Node.js | Python | Node.js |
| JS-рендер | Нет | Нет | Да |
| Скорость | Высокая | Высокая | Низкая–средняя |
| DX селекторов | jQuery-like | Pythonic | DOM в браузере |
Ограничения
Cheerio не исполняет скрипты. Пустой #app — признак клиентского рендера. Для e-com мониторинга часто выгоднее парсинг интернет-магазина.
Когда не подходит
Тяжёлый SPA — браузерный стек. Python-краул — Scrapy. Платформа акторов — Apify / Crawlee.
FAQ
Cheerio — это jQuery?
Нет. Отдельная библиотека с похожим API на сервере.
Нужен ли jsdom?
Для извлечения полей обычно нет.
Как масштабировать?
Очередь, лимиты RPS; при росте — Crawlee.
Заказной парсинг: парсинг сайтов. Серия: Puppeteer, Crawlee.
