Парсинг сайтов и сбор данных с помощью нейросетей

Обычный парсер работает через CSS-селекторы или XPath. Вы указываете, где на странице лежит нужный блок, скрипт вытаскивает текст по этому адресу. Проблема в том, что верстка сайтов меняется. Магазин обновил дизайн карточки товара, и весь парсер сломался, потому что цена теперь лежит в другом div.

AI-скрейпинг решает эту задачу иначе. Вы описываете нейросети словами, что нужно извлечь: название товара, цену, наличие. Модель сама находит эти данные в HTML, даже если верстка изменилась или структура страницы отличается от той, что была вчера. Это удобно для сайтов с неструктурированным HTML, где разные страницы собраны по разным шаблонам.

Минус тоже есть. Каждый запрос к LLM стоит денег и занимает время. Для тысяч страниц в день это может быть дороже, чем классический парсер на селекторах. Поэтому AI-инструменты чаще берут не для замены старых парсеров, а для задач, где верстка нестабильна или меняется слишком часто, чтобы поддерживать селекторы вручную.

ScrapeGraphAI: как пользоваться

ScrapeGraphAI: как пользоваться

Ссылка: ScrapeGraphAI 

ScrapeGraphAI — python-библиотека, которая строит пайплайн из графа узлов. Каждый узел отвечает за свой шаг: загрузка страницы, очистка HTML, запрос к LLM, сборка результата в JSON.

Запуск выглядит так:

  1. Установить библиотеку командой pip install scrapegraphai.
  2. Подключить ключ от LLM. Подойдут OpenAI, Gemini, Groq, Azure, а также локальные модели через Ollama, если не хочется платить за каждый запрос.
  3. Создать SmartScraperGraph, передать URL и текстовый запрос на естественном языке — например, «собери название и цену каждого товара на странице».
  4. Запустить пайплайн методом run и получить структурированный JSON на выходе.

Библиотека сама чистит HTML от скриптов и стилей перед тем, как отправить его модели, это снижает расход токенов. Для одной карточки товара типичный запрос укладывается в несколько тысяч входных токенов, и при использовании недорогой модели вроде gpt-4o-mini цена одного запроса получается сопоставима с долями цента.

ScrapeGraphAI рассчитан на людей, которые пишут код. Есть и облачная версия с no-code интерфейсом, но основная сила библиотеки в гибкости пайплайнов: можно комбинировать сбор с нескольких страниц, добавлять прокси, встраивать логику повторных попыток.

Crawl4AI

Crawl4AI

Ссылка: Crawl4AI 

Crawl4AI — открытый краулер на Python, заточенный под подготовку данных для LLM. Его главная функция — превращать страницу в чистый markdown, а не в сырой HTML. Формат markdown занимает меньше токенов и легче читается моделью, что снижает расходы при последующей обработке текста нейросетью.

Базовый запуск:

from crawl4ai import AsyncWebCrawler

async with AsyncWebCrawler() as crawler:

    result = await crawler.arun(url=»https://example.com»)

    print(result.markdown)

Кроме markdown, инструмент отдаёт исходный HTML, список ссылок и медиафайлы. Есть отдельная стратегия LLMExtractionStrategy, которая позволяет задать схему данных и получить с страницы именно те поля, что нужны, а не весь текст целиком.

Из практических особенностей: краулер сам разворачивает страницу через Playwright, значит работает с JavaScript и динамическим контентом. Есть функция адаптивного обхода, которая по мере сбора данных сама решает, достаточно ли информации собрано, и останавливается, не тратя запросы впустую. Начиная с версии 0.8.x добавлена защита от антибот-систем с ротацией прокси и разбором Shadow DOM.

Важный момент по безопасности: до версии 0.8.7 в библиотеке находили уязвимости, связанные с Docker API сервером и жёстко зашитым JWT-ключом. Если разворачиваете Crawl4AI через Docker, стоит проверить, что используете актуальную версию.

Как это устроено на python 

Типичный пайплайн AI web scraping на python собирается из трёх частей.

Сначала страница загружается и, если нужно, рендерится через headless-браузер вроде Playwright. Динамические сайты, где контент подгружается через JavaScript после первой загрузки, требуют именно такого шага. Без рендеринга парсер увидит пустой каркас страницы.

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

Последний шаг — запрос к LLM с описанием нужных полей и, желательно, с примером ожидаемого JSON. Задание модели конкретной схемы данных снижает количество ошибок и упрощает дальнейшую обработку результата в коде.

Парсинг цен маркетплейсов с помощью ИИ

Сбор цен с маркетплейсов — одна из самых частых задач, где AI-парсинг оправдан. У крупных площадок карточки товаров часто отличаются структурой в разных категориях: у одежды одна разметка, у электроники другая, у товаров со скидкой добавляется третий блок. Поддерживать отдельные селекторы под каждый вариант неудобно.

При работе через нейросеть достаточно один раз описать, что нужно достать: название, цену до скидки, цену после скидки, рейтинг, количество отзывов. Модель сама подстраивается под разные варианты карточек. Это особенно полезно при мониторинге конкурентов, где цены и ассортимент постоянно меняются, а структура страниц обновляется без предупреждения.

На практике такие задачи собирают отдельным сервисом, который раз в день или раз в несколько часов проходит по списку товаров и обновляет цены в базе. При больших объёмах имеет смысл сначала быстро проверить, не поменялась ли структура страницы, и только тогда, когда старые селекторы дали сбой, подключать модель для повторного анализа. Так расходы на токены остаются под контролем.

Обход блокировок и работа с динамическим контентом

Сайты защищаются от парсинга разными способами: капчи, проверка User-Agent, ограничение количества запросов с одного IP, поведенческий анализ через JavaScript.

Полностью обойти защиту с помощью одной только нейросети нельзя, ИИ отвечает за извлечение данных, а не за маскировку запроса. Для обхода блокировок используют ротацию прокси, задержки между запросами, эмуляцию реального браузера через headless Chrome или Playwright, а иногда сервисы решения капчи.

Нейросеть в этой связке помогает на этапе, когда страница уже загружена и нужно понять, что на ней написано, особенно если контент подгружается динамически или структура нестабильна. Поэтому AI-скрейпинг обычно работает вместе с обычными инструментами обхода блокировок, а не вместо них.

Что выбрать

Для разовых задач или прототипа, где не хочется писать селекторы, подойдёт ScrapeGraphAI: описали запрос словами, получили JSON.

Для регулярного сбора большого объёма страниц, особенно если данные потом идут дальше в LLM или RAG-систему, лучше подходит Crawl4AI за счёт чистого markdown на выходе и адаптивного обхода.

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

Чем AI-парсинг отличается от обычного парсера на селекторах?

Обычный парсер ищет данные по фиксированному адресу в коде страницы: конкретный тег, класс или путь XPath. Если верстка меняется, такой парсер ломается. AI-парсер получает текстовое описание нужных данных и сам находит их в HTML, даже когда структура страницы изменилась.

Нужно ли уметь программировать, чтобы пользоваться ScrapeGraphAI?

Библиотека рассчитана на работу через python-код. Есть облачная версия с no-code интерфейсом, но основные возможности, вроде гибких пайплайнов и подключения прокси, доступны через код.

Сколько стоит один запрос к LLM при парсинге страницы?

Зависит от модели и объёма HTML. При использовании недорогой модели вроде gpt-4o-mini запрос на одну карточку товара обычно обходится в доли цента, поскольку библиотека заранее чистит HTML от скриптов и стилей.

Чем Crawl4AI полезен, если данные потом обрабатывает нейросеть?

Crawl4AI отдаёт страницу в формате markdown вместо сырого HTML. Markdown занимает меньше токенов и проще читается моделью, поэтому дальнейшая обработка текста обходится дешевле.

Работает ли AI-парсинг с сайтами, где контент подгружается через JavaScript?

Да, если краулер разворачивает страницу через headless-браузер, например Playwright. Без рендеринга парсер увидит только пустой каркас страницы без динамического содержимого.

Может ли нейросеть сама обойти блокировку сайта?

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

Стоит ли заменять обычный парсер цен маркетплейсов на AI-инструмент?

Не полностью. Для регулярного сбора большого объёма страниц выгоднее держать классический парсер на селекторах как основной механизм, а нейросеть подключать точечно, когда структура карточки меняется и старые селекторы перестают работать.
guest
0 комментариев
Старые
Новые Популярные