ScrapeGraphAI — библиотека для Python, которая собирает конвейер извлечения из графа шагов: загрузить страницу, разбить на части, спросить языковую модель и склеить ответ в словарь с нужными полями. Библиотека работает у вас, а модель выбирается в настройках: локальная через Ollama или облачная по ключу. Метод годится для публичных страниц, на сбор которых у компании есть право, и для небольших выборок, где результат проверяет человек.

Библиотека с графом

TL;DR

Установка состоит из pip install scrapegraphai и playwright install; основной конвейер SmartScraperGraph принимает запрос на естественном языке, адрес страницы и настройки модели, а возвращает словарь.

Репозиторий ScrapeGraphAI опубликован под лицензией MIT. На 5 октября 2026 репозиторий открыт для работы, последний выпуск датирован 25 сентября 2026, последний коммит в основной ветке тоже в сентябре. В README указано, что библиотека предназначена только для исследования данных и исследовательских задач; читайте эту оговорку как границу применения и для промышленного потока сначала оцените риски. Название носит и облачный сервис ScrapeGraphAI с собственным API: это другой продукт, его условия и тарифы смотрите на сайте вендора.

Механика отличается от облачного сервиса обхода вроде Firecrawl. Тот сначала возвращает очищенное содержимое страниц, а структурное извлечение предлагает как дополнение. Здесь запрос к модели встроен в конвейер: страницу читает модель и сама решает, какой фрагмент подходит под запрос. Выигрыш в том, что один и тот же запрос способен работать на страницах с разной вёрсткой. Цена вопроса состоит в том, что результат зависит от модели, и каждое значение требует проверки.

Модель задаётся в конфигурации: README показывает пример с локальной Ollama и вариант с облачной моделью по ключу. Локальный вариант оставляет текст страниц на вашем оборудовании; с облачной моделью текст уходит вендору модели, и это учитывают, если страницы содержат что-либо кроме публичных сведений. О локальном запуске моделей рассказывает термин Ollama.

Схема полей

Запрос к графу формулируйте как перечень полей; просьба «расскажи о странице» даёт неуправляемый результат. Для карточки услуги это название, срок, условия и ссылка на источник. Чем уже перечень, тем меньше места для домысла. Поля без значения должны возвращаться пустыми: в запросе прямо сказано, что вместо догадки нужен пустой ответ.

ПолеПравило заполненияПроверка скриптом
НазваниеДословно из заголовка страницыСтрока присутствует в тексте страницы
СрокТолько если указан числом в текстеЧисло найдено рядом с названием
УсловияКороткая цитата, без пересказаЦитата целиком встречается в тексте
ИсточникАдрес из списка, без придуманныхСовпадает с входным адресом

Главная проверка проста для скрипта: каждое извлечённое значение должно находиться в исходном тексте страницы. Совпадения нет — запись помечается и уходит на ручную сверку. Такая проверка ловит самую неприятную ошибку подобных конвейеров, когда модель аккуратно оформляет значение, полностью отсутствующее на странице. Результат хранится вместе с адресом, временем и версией схемы, чтобы позже воспроизвести любой разбор.

Источники и права

Библиотека умеет открывать любую доступную страницу, поэтому границы задаёт список адресов вне кода. Составьте таблицу: адрес, владелец, основание для сбора, частота обновления. Собственный сайт, партнёрские материалы с разрешением и открытые данные с ясной лицензией проходят. Закрытые разделы, страницы с персональными данными и сайты, чьи правила запрещают автоматический сбор, остаются вне списка. Правила сайта, robots.txt, авторские права и закон о персональных данных относятся к ответственности компании, спорные случаи разбирает юрист.

Права на данные зависят от их вида. Цены, наличие и адреса из открытого каталога оценивают иначе, чем авторские тексты статей, а сведения о людях требуют отдельного основания. Поэтому в таблице источников для каждой строки заведите графу «что именно собираем» и сверьте её с юристом до первого запуска. Результат извлечения хранится у компании, и любое использование за пределами внутреннего анализа согласуется заново.

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

Библиотека отправляет анонимную телеметрию использования; README описывает переменную окружения SCRAPEGRAPHAI_TELEMETRY_ENABLED со значением false, которая её отключает. Для корпоративной среды это значение включают в конфигурацию сразу, наряду с запретом исходящих соединений, кроме нужных.

● Discovery · 1 час · бесплатно

Какие публичные страницы вам нужно разбирать на поля регулярно?

Прийти на Discovery →

Контроль качества

Оценивать конвейер лучше на размеченной выборке. Возьмите тридцать страниц разной вёрстки, заполните поля вручную и получите эталон. Затем прогоните библиотеку и посчитайте для каждого поля долю совпадений и долю пустых значений. Отдельная графа — выдуманные значения, которых нет в тексте страницы. Модель, схему и версию библиотеки при замене меняйте по одной и сравнивайте с тем же эталоном.

  1. Выберите тридцать страниц из списка и вручную заполните поля эталонной таблицы.
  2. Установите библиотеку в отдельное окружение, зафиксируйте версию и отключите телеметрию.
  3. Прогоните SmartScraperGraph по каждой странице с одинаковым запросом и сохраните словари.
  4. Сравните с эталоном по каждому полю и отдельно посчитайте значения, которых нет на странице.
  5. Разберите десять худших случаев: причина в вёрстке, в запросе или в модели.

Отдельно измерьте стабильность. Один и тот же запрос на одной странице модель способна обработать по-разному, особенно при ненулевой температуре. Прогоните страницу десять раз и посмотрите, сколько различных словарей получилось. Разброс в названии означает слабый запрос, разброс в условиях означает, что поле лучше отдать человеку. Фиксируйте температуру и модель в конфигурации, чтобы разбор можно было воспроизвести.

Порог допуска задаёт владелец процесса. Для справочных полей вроде названий допустим один порог, для условий и сроков порог выше, а запись с расхождением идёт к сотруднику. Если выдуманные значения встречаются регулярно, меняют модель либо дробят запрос на части; усиление формулировки строгими словами помогает слабо. Когда извлечённые поля потом нужно спрашивать из таблиц, пригодится материал про вопросы к таблицам и базам на обычном языке.

Запуск у себя

Рабочий запуск оформляют как плановое задание на сервере или в среде автоматизации: список адресов читается из таблицы, результаты пишутся в базу, ошибки уходят в журнал. Задание ограничивает число страниц за один запуск и останавливается при серии ошибок. Журнал хранит адрес, время, версию схемы, модель и итог проверки, а текст страниц с персональными данными остаётся вне журнала.

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

Отчёт для команды собирается из проверенных записей. Записи с отметкой «нет в тексте» ждут ручной сверки и попадают в отчёт только после неё. Обновление библиотеки принимайте после повторного прогона эталонной выборки: смена версии меняет поведение графа, и без сравнения изменение остаётся незаметным. Как мы встраиваем такие конвейеры в процессы компании, описано на странице про автоматизацию бизнес-процессов, а про сбор данных через управляемый браузер рассказывает разбор Playwright MCP.

// с чего начать

Сократите задачу до одной страницы и трёх полей, прогоните её десять раз подряд и сравните результаты между собой. Расхождение между прогонами скажет о стабильности конвейера больше любого описания. Если нужен такой конвейер с эталоном и проверкой под ваши источники, обсудим его на Discovery: состав работ определим после разбора задачи.

Частые вопросы

Что такое ScrapeGraphAI?
Библиотека для Python под лицензией MIT: она строит конвейер из графа шагов и языковой модели и извлекает данные с веб-страниц и локальных документов по запросу на естественном языке. Результат приходит словарём.
Как установить ScrapeGraphAI?
Выполните pip install scrapegraphai и playwright install в отдельном виртуальном окружении. Модель задаётся в конфигурации: локальная через Ollama или облачная по ключу. Версию библиотеки зафиксируйте.
Чем ScrapeGraphAI отличается от Firecrawl?
Firecrawl в первую очередь возвращает очищенное содержимое страницы как облачный сервис. ScrapeGraphAI работает у вас и встраивает модель в конвейер, отдавая готовые поля, поэтому результат зависит от модели и требует проверки каждого значения.
Можно ли собирать данные с любых сайтов?
Нет. Список адресов определяет компания: собственный сайт, партнёры с разрешением и открытые данные с ясной лицензией. Правила сайта, авторские права и закон о персональных данных проверяйте до запуска.
Как проверить качество извлечения?
Подготовьте эталонную таблицу на тридцати страницах, прогоните конвейер и сравните поля. Скрипт дополнительно проверяет, что каждое значение встречается в тексте страницы; иначе запись идёт на ручную сверку.
ScrapeGraphAI передаёт данные наружу?
Локальная модель оставляет текст страниц у вас, облачная отправляет его вендору модели. Анонимная телеметрия библиотеки отключается переменной окружения SCRAPEGRAPHAI_TELEMETRY_ENABLED со значением false.