// Python Dev

Парсинг данных в 2026: не надо гонять каждую страницу через LLM!

Опубликовано 13.05.2026

Среди разработчиков парсеров распространяется странный подход: каждую скачанную страницу отправлять в LLM с просьбой найти нужные данные. Звучит удобно — не надо разбираться в разметке, модель сама разберётся. Под это даже созданы специальные инструменты: ScrapeGraphAI, Crawl4AI, FireCrawl — все они так или иначе гоняют содержимое страниц через языковую модель на каждой итерации.

На практике это создаёт три проблемы одновременно.

Почему это плохой подход

Медленно. Цикл выглядит так: скачать страницу, отправить в модель, дождаться ответа, перейти к следующему URL. На тысячах страниц это превращается в очень долгое ожидание. Даже если запускать параллельно — всё равно каждая итерация цикла очень медленная.

Дорого. Вы сжигаете токены на HTML-тегах, стилях, навигационных меню и прочем мусоре, который не имеет никакого отношения к вашим данным. Полезная нагрузка — это часто 10% от того, что реально уходит в модель.

Недетерминировано. LLM может тихо пропустить часть данных, особенно если их много на странице. Вы не всегда это заметите сразу — а данные уже неполные. Это принципиальное отличие от классического краулера, который либо нашёл элемент по селектору, либо упал с ошибкой. Здесь провал происходит молча. И это, на мой взгляд, самое опасное: вы не можете быть уверены на 100%, что собранные данные совпадают с тем, что было на сайте.

Как делать правильно

Используйте LLM один раз — не на каждой странице.

Берёте несколько вариантов страниц с нужной информацией, загружаете разметку в модель и просите сгенерировать код для извлечения данных — CSS-селекторы или XPath. Дальше запускаете обычный краулер с этими настройками.

Выбор инструмента зависит от сложности сайта:

  • BeautifulSoup — для статических страниц, где данные есть прямо в HTML. Лёгкий, быстрый, надёжный.
  • Playwright (или Puppeteer) — для динамических сайтов с JavaScript-рендерингом, бесконечной прокруткой, модальными окнами и прочими радостями современного фронтенда. Поднимает настоящий браузер и ждёт, пока всё загрузится.

В итоге получаете систему, которая работает быстро, выдаёт предсказуемый результат и не тратит токены впустую. Именно так устроены поисковые краулеры — никто не гоняет GPT на каждую страницу индекса.

Где LLM всё же полезен в парсинге

LLM отлично справляется с задачами, где нужно понять структуру и написать код — ровно то, что мы и предлагаем делать. Также модель хорошо работает на этапе постобработки: классифицировать извлечённые данные, нормализовать форматы, извлечь смысл из неструктурированного текста. Это её стихия. Быть конвейером на каждый запрос — нет.

Итог

Разделите ответственности: LLM строит инструмент, краулер собирает данные, LLM при необходимости обрабатывает результат. Каждый делает то, что умеет лучше всего.

Если вам нужно собрать данные из интернета — товары с маркетплейсов, объявления, цены, отзывы, любые другие источники — обращайтесь. Найдём, спарсим, классифицируем.

// Python Dev

Другие статьи Python Dev

Все статьи

// Python Projects

Проекты Python Dev

Все проекты

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Отправить заявку
Написать и получить быстрый ответ