Парсер на CSS-селекторах ломается, когда сайт меняет вёрстку. Парсер на LLM не ломается, но за каждую страницу выставляет счёт. В 2026 году выбор между ними перестал быть делом вкуса: цены моделей разошлись в десятки раз, а одна и та же страница может стоить 3 000 или 20 000 токенов в зависимости от того, что вы отправили в модель. Ниже — сравнение трёх подходов по деньгам, надёжности и трафику прокси, с расчётом на 1 000 и на миллион страниц.
Коротко: что выбрать
- Селекторы (CSS/XPath) — один шаблон страниц, большие объёмы, стабильная вёрстка. Стоимость извлечения близка к нулю, но поддержка ложится на разработчика.
- LLM-извлечение — много разных сайтов, нестабильная вёрстка, разовые задачи. Платите за токены на каждой странице и обязаны валидировать ответ.
- Гибрид — LLM один раз пишет селекторы, дальше работают селекторы, а модель вызывается только когда проверка данных упала. Для большинства постоянных парсеров это оптимум.
Критерии сравнения
Сравниваем по пяти пунктам, которые реально влияют на итоговый счёт и на качество данных:
- стоимость извлечения на 1 000 страниц;
- поведение при смене вёрстки;
- точность и риск выдуманных значений;
- скорость и задержка;
- расход трафика прокси — он, как увидите, от выбора метода почти не зависит.
Сколько стоит LLM-извлечение: считаем по прайсам на октябрь 2026
Официальные цены за миллион токенов (вход / выход) на стандартном тарифе:
- Gemini 2.5 Flash-Lite — $0,10 / $0,40;
- Gemini 3.1 Flash-Lite — $0,25 / $1,50;
- Claude Haiku 4.5 — $1 / $5;
- Gemini 3.5 Flash — $1,50 / $9.
У Google и Anthropic есть Batch API со скидкой 50% на вход и выход — для парсинга, где ответ не нужен мгновенно, это первый рычаг экономии.
Главная переменная — не модель, а то, что вы в неё отправляете
Сырая HTML-страница при передаче в модель обычно занимает 10–40 тысяч токенов. Cloudflare, запуская функцию Markdown for Agents, привёл пример: одна и та же запись блога весит 16 180 токенов в HTML и 3 150 токенов в Markdown — минус 80%. Другие замеры по новостям, документации и карточкам товаров дают сокращение от 67 до 94%.
Для расчёта возьмём допущения: сырая страница — 20 000 токенов, очищенная до Markdown — 3 000, плюс 500 токенов на инструкцию и схему, на выходе 300 токенов JSON. На 1 000 страниц получаем:
| Модель | Сырой HTML (20,5 млн вход) | Markdown (3,5 млн вход) |
|---|---|---|
| Gemini 2.5 Flash-Lite | ≈ $2,17 | ≈ $0,47 |
| Gemini 3.1 Flash-Lite | ≈ $5,58 | ≈ $1,33 |
| Claude Haiku 4.5 | ≈ $22,00 | ≈ $5,00 |
| Gemini 3.5 Flash | ≈ $33,45 | ≈ $7,95 |
Разброс — в 70 раз между худшим и лучшим вариантом при одинаковом результате. Две трети этой разницы даёт очистка входа, а не выбор модели. На миллионе страниц в месяц это либо около $470, либо больше $33 000.
Ещё одна деталь: модели Claude начиная с версии 4.7 используют новый токенизатор, который, по данным Anthropic, даёт примерно на 30% больше токенов на тот же текст. Сравнивая счета разных поколений моделей, учитывайте это — Haiku 4.5 работает на старом токенизаторе.
Селекторы: почти бесплатно, пока сайт не поменялся
Выполнение CSS- или XPath-селектора на уже скачанной странице стоит долю миллисекунды процессора. В руководстве ScrapingBee оценка такая: на стабильной вёрстке обычный селектор примерно в 10 раз дешевле и быстрее LLM-извлечения. На практике разница ещё больше, потому что у селектора нет сетевого запроса к API модели.
Цена селекторов — в поддержке:
- сайт переименовал класс или обернул блок в новый div — парсер молча отдаёт пустые поля;
- A/B-тесты показывают разные шаблоны разным посетителям, и часть страниц не парсится;
- на 50 разных сайтах вы поддерживаете 50 наборов селекторов.
Самый опасный сценарий — не падение, а тихая порча данных: селектор цепляет соседний элемент, и в базу неделями пишется старая цена вместо текущей.
LLM: устойчив к вёрстке, но умеет выдумывать
Модели не нужен точный путь к элементу — она ищет «цену» по смыслу. Это снимает проблему переименованных классов и разных шаблонов. Но появляются три типовых сбоя, которые описывают все, кто запускал такие парсеры в продакшене:
- выдуманные значения — модель «угадывает» цену или артикул, которых на странице нет;
- пропущенные поля — часть данных не извлечена;
- дрейф структуры — строка вместо числа, другое имя ключа.
Защита обязательна: строгая схема ответа, валидация (например, Pydantic), temperature = 0 и повтор при ошибке. Ноль температуры уменьшает разброс, но не убирает галлюцинации полностью. Для цен и остатков разумно добавлять проверку «значение действительно встречается в тексте страницы».
Задержка тоже выше: к времени загрузки страницы через прокси прибавляется ответ модели — от долей секунды до нескольких секунд. Для мониторинга раз в сутки это неважно, для отслеживания дропов — критично.
Гибрид: LLM пишет селекторы, а не извлекает данные
Третий путь прямо поддерживается популярными библиотеками. В Crawl4AI есть функция генерации схемы: модель один раз смотрит на образцы HTML и возвращает набор CSS/XPath-селекторов, после чего извлечение идёт без вызовов LLM. В документации подчёркивается, что это разовая стоимость, а схему можно переиспользовать без ограничений; при нескольких образцах модель часто выбирает более устойчивые селекторы по атрибутам вместо хрупких позиционных вроде nth-child.
Рабочая схема гибрида:
- LLM генерирует селекторы по 3–5 образцам страниц одного шаблона.
- Парсер работает на селекторах, каждую запись проверяет валидатор: поля на месте, типы верные, цена в разумном диапазоне.
- Если доля невалидных записей превысила порог (скажем, 2–5%), страница уходит в LLM-извлечение, а схема — на перегенерацию.
- Новая схема прогоняется на контрольной выборке и только потом заменяет старую.
Так вы платите за модель только в моменты смены вёрстки, а не за каждую из миллиона страниц.
Сводная таблица
| Критерий | Селекторы | LLM-извлечение | Гибрид |
|---|---|---|---|
| Стоимость извлечения | около нуля | $0,5–33 на 1 000 стр. | около нуля + разовые вызовы |
| Смена вёрстки | ломается, часто молча | обычно переживает | чинится автоматически |
| Риск выдуманных данных | нет (но есть «не тот элемент») | есть, нужна валидация | минимальный |
| Скорость | максимальная | + ответ модели на каждой странице | как у селекторов |
| Много разных сайтов | дорого в поддержке | сильная сторона | хорошо, схема на каждый шаблон |
| Трафик прокси | одинаковый — модель не уменьшает скачанные байты | ||
Про прокси: LLM не экономит трафик
Частая ошибка в расчётах — считать, что «умный» парсер дешевле в сети. Нет: преобразование HTML в Markdown происходит после скачивания, поэтому через прокси проходит полная страница при любом методе извлечения. Исключение — сайты, где владелец сам включил отдачу Markdown по заголовку Accept: text/markdown (как в функции Cloudflare), но это решение сайта, а не ваше.
Для масштаба: при весе HTML 200 КБ без картинок 1 000 страниц — это около 0,2 ГБ, или примерно $0,54 на резидентных прокси по $2,70 за ГБ. Сравните с таблицей выше: при отправке сырого HTML в Claude Haiku 4.5 счёт за модель окажется в 40 раз больше счёта за прокси, а при Markdown и Flash-Lite они сопоставимы. Если вы рендерите страницы headless-браузером, трафик вырастет в разы — замеры есть в нашем сравнении расхода трафика Playwright, Puppeteer и requests на 1 000 страниц.
Что действительно влияет на трафик при любом методе:
- не качать картинки, шрифты и аналитику, если они не нужны;
- искать внутренний JSON API вместо HTML;
- не делать лишних повторов: каждый бан и ретрай — это оплаченные байты. Подробнее о том, почему цена за ГБ обманчива, — в разборе реальной стоимости успешной записи.
Для простых каталогов без жёсткой антибот-защиты хватает датацентровых прокси по $1,50 за ГБ; резидентные нужны там, где IP хостинга режут на входе.
Рекомендации по сценариям
- Мониторинг цен одного-трёх маркетплейсов, сотни тысяч карточек. Гибрид или чистые селекторы с валидатором. LLM подключать только для перегенерации схемы.
- Сбор данных с сотен разнородных сайтов (лиды, вакансии, контакты). LLM-извлечение на Markdown через дешёвую модель в batch-режиме. Без строгой схемы и валидации не запускать.
- Разовое исследование на несколько тысяч страниц. LLM: за единицы долларов вы экономите дни на написании селекторов.
- Данные, где ошибка стоит денег (цены для репрайсинга, остатки). Селекторы или гибрид плюс сверка значения с исходным текстом страницы.
- RAG и базы знаний. Здесь нужна не структура, а чистый текст: конвертация в Markdown без извлечения полей, модель — только на этапе ответа.
Вывод
LLM-извлечение не заменило селекторы, а сместило точку выбора. Дешевле всего — гибрид: модель пишет и чинит селекторы, а не читает каждую страницу. Если без модели на каждой странице не обойтись, сначала очищайте вход до Markdown и используйте batch: эти два шага сокращают счёт в 5–10 раз до того, как вы начнёте выбирать модель. И помните, что прокси-трафик от метода извлечения не зависит: экономить его нужно на том, что вы скачиваете, а не на том, как разбираете.
