Парсинг с ИИ-обработкой на VPS
Классический парсинг ломается на каждом изменении вёрстки. Связка «скрапер + LLM» превращает грязный HTML в чистый JSON, понимая смысл, а не селекторы. Соберём такой конвейер на VPS и поставим его на расписание.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Зачем добавлять ИИ к парсингу
Обычный парсер завязан на структуру страницы: поменяли класс — и всё сломалось. LLM работает иначе: вы отдаёте ей текст страницы и просите вернуть нужные поля в JSON. Модель понимает контекст, поэтому переживает мелкие изменения вёрстки и вытаскивает данные даже из неструктурированного текста.
Типовые задачи: сбор цен и характеристик товаров, извлечение контактов из карточек, структуризация новостей и отзывов, парсинг объявлений. ИИ-слой берёт на себя самую хрупкую часть — понимание содержимого.
Разделение труда тут естественное: скрапер отвечает за доставку сырого текста, а LLM — за его осмысление. Такой конвейер намного устойчивее классического, где сотни CSS-селекторов рассыпаются при первом же редизайне сайта. Вы описываете, что хотите получить, один раз словами, а не поддерживаете хрупкую карту разметки под каждый источник.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для ИИ-парсингаПочему это задача для VPS
Парсинг любит постоянный сервер: сбор идёт по расписанию, часто ночью, и должен пережить перезагрузки. Плюс нужен стабильный IP и хорошая сеть, чего у домашнего интернета обычно нет.
- Запуск по cron без включённого компьютера
- Стабильный зарубежный IP для доступа к сайтам
- Достаточно RAM под браузерный рендеринг
- Изоляция headless-браузера от основной системы
Зарубежная локация MAATRIX (UK или США) особенно кстати, когда целевые сайты отдают контент только иностранным адресам.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Готовим окружение
Ставим Python-стек: requests для простых страниц, Playwright — для JS-сайтов.
python3 -m venv ~/scrape && source ~/scrape/bin/activate
pip install requests beautifulsoup4 playwright openai
playwright install chromium
playwright install-deps
install-deps подтянет системные библиотеки для headless-Chromium — на свежем VPS без них браузер не запустится.
Собираем страницу
Для статичных страниц хватает requests. Для сайтов на JS рендерим через Playwright и забираем текст, отбросив разметку.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
b = p.chromium.launch()
page = b.new_page()
page.goto("https://example.com/product/123")
text = page.inner_text("body")
b.close()
Чистый текст вместо HTML экономит токены: незачем скармливать модели теги и скрипты.
Извлекаем структуру через LLM
Просим модель вернуть строго заданный JSON. Ключ — чёткая схема и temperature=0 для стабильности.
from openai import OpenAI
client = OpenAI()
r = client.chat.completions.create(
model="gpt-4o-mini", temperature=0,
response_format={"type": "json_object"},
messages=[{"role": "user", "content":
f"Верни JSON с полями name, price, sku:\n{text}"}])
print(r.choices[0].message.content)
Режим response_format гарантирует валидный JSON, который сразу можно парсить и класть в базу. Чтобы не жечь токены, обрезайте текст до релевантного блока страницы.
Ещё сильнее повышает надёжность явная схема с обязательными полями и типами. Опишите в промпте, какие ключи ждёте и что делать, если данных нет — например, ставить null. Тогда результат легко проверить и отбраковать битые записи автоматически, не разбирая их руками. Для потоковой обработки это разница между стабильным конвейером и постоянной ручной чисткой.
Расписание, вежливость и надёжность
Ставим сбор на cron и соблюдаем правила приличия, чтобы не получить блокировку.
crontab -e
0 3 * * * /root/scrape/bin/python /root/scrape/run.py >> /var/log/scrape.log 2>&1
- Делайте паузы между запросами и уважайте robots.txt
- Ставьте адекватный User-Agent и таймауты
- Кэшируйте уже обработанные страницы — не гоняйте LLM дважды
- Логируйте ошибки, чтобы ловить смену вёрстки
На AMD EPYC + NVMe у MAATRIX headless-браузер рендерит страницы быстро, а результаты складываются на быстрый диск. Ежедневные бэкапы сохранят собранную базу, а оплата картой РФ, СБП или криптой снимает вопрос доступа к зарубежному серверу.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для ИИ-парсингаОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Не дорого ли гонять каждую страницу через LLM?
Дешёвые модели и обрезка текста до нужного блока делают это копеечным. Кэшируйте обработанные страницы, чтобы не платить повторно.
Как обходить блокировки?
Разумные паузы, реалистичный User-Agent и стабильный зарубежный IP решают большинство проблем. Для сложных случаев добавляют прокси.
requests или Playwright?
Для статичных страниц хватает requests — он легче и быстрее. Playwright нужен там, где контент подгружается JavaScript.
Законно ли это?
Зависит от сайта и данных. Соблюдайте условия использования и robots.txt, не собирайте персональные данные без основания.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.