Перейти к содержимому

ИИ для обработки данных: скрипты, парсинг, скрапинг с агентами

Кодинг-агент умеет писать код, запускать команды и читать файлы. Но у него нет браузера — и это ломает любую задачу, где данные лежат на веб-странице, в API или в разнородных файлах. Подключаем Playwright MCP — и агент получает браузер как инструмент: открывает страницы, читает структуру, кликает по пагинации и возвращает результат текстом. Дальше — парсинг HTML, трансформации JSON/CSV и выгрузка в файл. Разберём на конкретных задачах, где агент силён, а где быстрее написать скрипт самому.

Simon Willison в июле 2025 года поставил эксперимент: собирает расписание конференции Open Sauce 2025 — три дня, сотни сессий — целиком через агента прямо с телефона. Промпт был коротким:

“Install playwright and use it to visit https://opensauce.com/agenda/ and grab the full details of all three day schedules from the tabs — Friday and Saturday and Sunday — then save… in as much detail as possible in a JSON file and submit that as a PR”

«Установи playwright, зайди на opensauce.com/agenda/ и собери все детали расписаний за три дня со вкладок — пятницу, субботу и воскресенье — сохрани как можно подробнее в JSON-файл и отправь его как пул-реквест.»

simonwillison.net

Codex работал автономно 13 минут и выдал schedule.json на 63 КБ. Потом Willison поправил даты одним промптом, а следующий промпт обрезал JSON до 94 КБ — без потери данных. Никакого ручного парсинга: агент сам разобрал структуру страницы, извлёк данные и упаковал их в формат.

Этот кейс показывает рабочий паттерн: промпт → браузер → парсинг → нормализация → файл. Ниже — как его воспроизвести на своих задачах.

Какие задачи отдавать агенту для обработки данных

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

Задача Агент Helpful? Почему
Собрать данные с 5–20 страниц по шаблону ✅ Да Агент сам находит структуру, обрабатывает пагинацию, учитывает ошибки
Парсинг JSON-файла и приведение к единому формату ✅ Да Одна команда: «прочитай, нормализуй, сохрани в CSV» — без написания скрипта
Извлечение данных с сайта за логином (личный кабинет, аналитика) ✅ Да Playwright MCP работает с cookies и авторизацией
Парсинг 10 000+ страниц ⚠️ Осторожно Контекст переполнится; быстрее скрипт на Python, агент — для написания этого скрипта
Парсинг стабильного API с пагинацией ⚠️ Осторожно Агент напишет скрипт лучше, чем будет ходить по страницам сам
Работа с капчей / Cloudflare ❌ Нет Ни Playwright MCP, ни другой браузерный инструмент капчу не обходит
E2E-валидация каждой фичи сайта ❌ Нет Медленный и «блуждающий» — см. ограничения Playwright MCP

Правило: агент силён в разведке (понять структуру, найти данные) и в написании скриптов для помассовой обработки. Для задач на тысячи страниц правильная стратегия — дать агенту первую страницу, получить скрипт, запустить скрипт отдельно.

Документация Playwright для Python
Playwright — браузерное окружение, которое агент получает через MCP. Источник: playwright.dev/python/docs.
Какие задачи отдавать агенту: визуальная таблица
Схема автора: какие задачи отдавать агенту, а какие — скриптам. Зелёный — агент помогает напрямую, жёлтый — агент пишет скрипт, красный — не подходит.

Цикл «агент + Playwright MCP: сбор данных»

Минимальная связка для работы с вебом — это кодинг-агент (Claude Code, OpenCode, Cursor) и MCP-сервер Playwright. Последний даёт агенту браузер без vision-модели: страница приходит как accessibility-дерево — список ролей, имён и текстов.

Подключение — одна команда:

claude mcp add playwright npx @playwright/mcp@latest

Теперь агенту доступны инструменты browser_*: открыть страницу, получить снимок дерева, кликнуть, ввести текст, подождать элемент. Результат — текст в контексте, а не картинка.

Схема: цикл сбора данных агентом с Playwright MCP
Схема автора: запрос → Playwright открывает страницу → агент читает accessibility-дерево → парсинг и трансформация → результат в файл (CSV/JSON/MD).

Давайте пройдём цикл на конкретном примере.

Кейс 1: собираем вакансии с hh.ru и нормализуем в CSV

Задача: собрать 50 вакансий Python-разработчика в Москве — позиция, компания, зарплата, ссылка — и сохранить в CSV. Промпт для агента:

Зайди на hh.ru, собери 50 вакансий Python-разработчика в Москве.
Для каждой: позиция, компания, зарплата (если есть), ссылка.
Оформи в CSV → jobs.csv

Что происходит за кулисами:
1. Агент открывает hh.ru/vacancies?text=python+developer&area=1 через Playwright MCP.
2. Читает accessibility-дерево — находит список вакансий, названия компаний, зарплаты.
3. Кликает по пагинации (или скроллит), пока не наберёт 50 записей.
4. Нормализует данные: зарплата «от 200 000 ₽» → поле salary_from, «не указана» → пустое значение.
5. Сохраняет в jobs.csv через стандартный csv.DictWriter.

Этот промпт — из реального туториала ab429 на Habr (habr.com/ru/articles/1020598/), апрель 2026, 11 тыс. просмотров. Автор целенаправленно оптимизировал работу Claude Code с сайтами, у которых есть anti-bot защита, и пришёл к выводу:

«Попросить LLM-агента типа Claude Code “сходи в интернет и собери мне данные” — это как играть в казино.»

— ab429, habr.com/ru/articles/1020598/

Сырой промпт без контекста работает нестабильно. Лучше — давать агенту пошаговую инструкцию:

1. Открой https://hh.ru/search/vacancy?text=python+developer&area=1
2. Прочитай список вакансий на странице (название, компания, зарплата, ссылка)
3. Если есть кнопка «Дальше» — перейди на следующую страницу
4. Повтори, пока не наберёшь 50 вакансий
5. Сохрани в jobs.csv со столбцами: title, company, salary, url

Ключевой момент: Playwright MCP отдаёт страницу как структуру, а не как картинку. Агент не «угадывает» координаты — он видит роли (link, heading, text) и имена элементов. Это детерминировано: один и тот же элемент кликается одинаково.

Кейс 2: парсинг HTML-таблицы через BeautifulSoup (агент пишет скрипт)

Не всегда нужно ходить по страницам браузером. Если данные уже скачаны — статическая HTML-страница, ответ API, экспорт из CMS — агент быстрее напишет скрипт на Python, чем будет проксировать всё через Playwright.

Задача: на HTML-странице есть таблица с ценами (500+ строк, несколько столбцов). Нужно извлечь данные и привести к единому формату.

Промпт:

В файле prices.html — HTML-таблица с ценами. Напиши скрипт на Python,
который:
1. Парсит все строки таблицы через BeautifulSoup (lxml)
2. Извлекает: название товара, артикул, цену, валюту
3. Нормализует цены: '5 000,00 руб.' → 5000.00, '5,000.00' → 5000.00
4. Сохраняет в prices_clean.csv
Запусти скрипт и проверь первые 5 строк результата.

Агент сгенерирует скрипт, использующий BeautifulSoup для парсинга и csv.DictWriter для записи. Используйте его как стартовую точку — и правьте под свою структуру HTML.

Документация по ключевым инструментам:

  • BeautifulSoup 4 — парсинг HTML/XML. Версия 4.14.3 на момент публикации. Есть русская версия документации.
  • Python json — модуль для чтения/записи JSON. В Python 3.14 появился CLI: python -m json для валидации и форматирования.
  • Python csvDictReader/DictWriter для чтения и записи CSV с произвольными столбцами.

Парсинг HTML — типичная задача, где агент пишет скрипт один раз, а скрипт потом работает сам. Агент экономит время на написании, но данные обрабатывает уже Python.

Кейс 3: трансформация JSON → CSV в песочнице

Данные из API редко приходят в нужном формате. Конкретный пример из практики — Евгений из RS_AI (habr.com/ru/articles/970726/) строил систему анализа цен на рабочую одежду. У него было 5 000+ SKU из 1С с выгрузкой в Excel. Форматы цен разъезжались:

Цены были представлены в различных форматах: «5 000,00 руб.», «5000.00», «5,000.00», а иногда и в виде текстового поля «Цена по запросу»

— RS_AI, habr.com/ru/articles/970726/

Плюс столбцы назывались по-разному: «Арт.», «ID товара», «Код номенклатуры» — одно и то же.

Промпт для нормализации:

Есть 3 CSV-файла от разных поставщиков: vendor_a.csv, vendor_b.csv, vendor_c.csv.
Столбцы называются по-разному, но 의미 одинаковый.

Напиши скрипт на Python, который:
1. Читает все три файла
2. Маппит столбцы по словарю:
   - product_name / название / наименование → product
   - article / sku / id_товара / код_номенклатуры → code
   - price / цена / стоимость → price (число, без пробелов и "руб.")
   - description / описание → description
3. Нормализует цены: убирает пробелы, заменяет запятую на точку, отбрасывает "руб."
4. Удаляет дубликаты по code (оставляет первый)
5. Сохраняет в unified_prices.csv

Запускать такой скрипт нужно в песочнице — это изолированная среда (контейнер или VM), где скрипт не повредит файлы вне рабочей директории. Simon Willison рекомендует запускать автономных агентов в контейнерах:

«Run unattended coding agents in a container, VM or OS sandbox.»

«Запускайте автономных агентов в контейнере, виртуальной машине или песочнице ОС.»

— Simon Willison, simonwillison.net

Агент создаёт скрипт, запускает его, проверяет первые строки результата — и вы получаете нормализованный файл без ручного написания кода.

Кейс 4: парсинг сотен страниц — агент как инструмент разведки

Не каждый scraping — это 10 000 страниц. Иногда задача — собрать неструктурированные данные со страниц, у которых нет API, и превратить их в структуру.

Piotr Migdał (p.migdal.pl, январь 2026, Show HN) собирал данные о балансах StarCraft II из сотен патч-ноутов — разнородных страниц с разной структурой. Каждый патч описан по-разному, нет единого формата, нет API. Задача — извлечь изменения и построить интерактивную визуализацию.

“LLMs made it possible — otherwise, I would not have had the time to code or to collect all changes from hundreds of patches.”

«LLM сделали это возможным — иначе у меня не было бы времени ни написать код, ни собрать все изменения из сотен патчей.»

— Piotr Migdał, p.migdal.pl

Инструменты: Claude Code + Playwright Skills (CLI-режим Playwright), Gemini 3 Pro для инсайтов. Агент прошёл по патчам, извлёк текст, нормализовал в единую структуру (год, патч, юнит, изменение), а потом визуализировал через D3.js.

Стратегия для больших объёмов:
1. Агент парсит одну страницу и выдаёт скрипт парсинга.
2. Скрипт адаптируется под остальные страницы (с небольшими правками).
3. Запуск скрипта на всех страницах — уже без агента.

Агент — это разведка и генерация кода, а не обработчик 10 000 файлов.

Какие задачи отдавать агенту (сводная таблица)

Тип задачи Пример Роль агента Ожидаемый результат
Сбор с нескольких страниц Расписание конференции, вакансии Прямой: ходит по страницам через Playwright JSON/CSV в контексте → сохранение в файл
Парсинг статичного HTML Таблица цен, документация Пишет скрипт на BeautifulSoup/lxml Python-скрипт, который вы запускаете
Трансформация JSON/CSV Нормализация данных из разных источников Пишет скрипт на pandas/csv Скрипт + результат в файле
API + пагинация Хабр, GitHub Issues, JSONPlaceholder Пишет скрипт с циклом + агент проверяет Скрипт; при малых объёмах — прямой сбор
Работа за логином Личный кабинет, аналитика, CRM Playwright MCP + cookies через GhostSession Данные из закрытого раздела
Валидация данных Проверка, что ссылки не ведут в 404 Прямой: обходит ссылки через Playwright Список «живых» и «мёртвых» ссылок

Инструменты: скрапинг и парсинг

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

Playwright MCP (github.com/microsoft/playwright-mcp) — MCP-сервер, дающий агенту браузер. Ставится через npx, не требует аккаунта, работает локально. Стандартный конфиг:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

Подробнее о подключении и ограничениях — в отдельной статье: «Playwright MCP: даём AI-агенту браузер».

Firecrawl — MCP-сервер для скрапинга с рядом режимов: Scrape (одна страница), Crawl (рекурсивный обход), Batch Scrape (пакетный), Extract (извлечение по JSON-схеме). ab429 на Habr (habr.com/ru/articles/1020598/) описал workflow: Firecrawl Extract берёт данные по схеме с JS-страниц, а агент обрабатывает результат.

BeautifulSoup / lxml — стандартный парсинг HTML в Python. Агент генерирует скрипт с BeautifulSoup(html, 'lxml'), вы проверяете и запускаете. Для статичных страниц и API-ответов быстрее, чем Playwright.

Python json / csv — встроенные модули для трансформации данных. json.loads()csv.DictWriter, csv.DictReader → очистка → csv.DictWriter — типичный пайплайн нормализации.

Для объёмов свыше тысячи страниц агент будет работать как генератор скриптов: напишет скрипт, вы проверите и запустите его отдельно. Playwright MCP остаётся полезным для точечных проверок и работы за логином.

Российские реалии

Доступность инструментов

Playwright MCP — локальный open-source пакет (Apache-2.0), ставится через npm. В РФ работает без VPN, регистрации и банковской карты не требует. Beautifulsoup, pandas, csv, json — стандартная библиотека Python, никаких ограничений.

Для кодинг-агента, который будет вызывать инструменты, нужен доступ к API: Claude Code требует подписки или API-ключа с зарубежной картой. Бесплатные альтернативы — локальные модели через Ollama или связка OpenCode + Zen. Подробнее про AI в терминале — в отдельной статье.

Блокировки и обход

Сайты, которые блокируют ботов (Cloudflare, конфигурации с обфускацией JS), создают проблемы при скрапинге. Cloudflare за 2025 год заблокировал 416 млрд запросов ИИ-ботов на парсинг (habr.com/ru/news/973900/). В России контекст шире: часть ресурсов может блокироваться Роскомнадзором, а при скрапинге зеркальных сайтов нужно учитывать, что данные могут отличаться от оригинала.

Этическая сторона

Скрапинг публичных данных — серая зона. Закон РФ «О персональных данных» (152-ФЗ) защищает персональную информацию, обход авторизации и капчи нарушает условия сервиса. Соблюдайте robots.txt — это не юридическая обязанность, но индустриальная норма. Не собирайте персональные данные без обоснованной необходимости.

Рунет-опыт

Русскоязычных кейсов по использованию AI-агентов для скрапинга немного. Два найденных:

  • ab429, «Как научить Claude Code работать с интернетом, не сжигая лимиты» (habr.com/ru/articles/1020598/, апрель 2026, 11 тыс. просмотров) — практический разбор Firecrawl + Claude Code для парсинга hh.ru, Ozon, SimilarWeb.
  • RS_AI, «AI для анализа данных: от Excel до парсера» (habr.com/ru/articles/970726/, ноябрь 2025) — непрограммист строит парсер и анализатор цен на Gemini.

Отдельного/big-данных материала про скрапинг с AI-агентами в рунете нет — тема не освещена.

Ограничения

  • Контекст: Playwright MCP — 21 инструмент ≈ 13,7 тыс. токенов на сессию. Для задач, где браузер не нужен, отключайте сервер и экономьте контекст.
  • Скорость: агент с браузером медленнее скрипта на requests/httpx. На 100+ страницах скрипт обгоняет агента в 10–50 раз.
  • Не стабильно: агент может «заблудиться» на странице с нестандартной структурой. Дублируйте критические проверки скриптами.
  • Капча и anti-bot: Playwright MCP не обходит CAPTCHA, Cloudflare Turnstile и аналоги. Для таких сайтов нужны специализированные сервисы.
  • Безопасность: страница может содержать промпт-инъекции. Ограничивайте хосты (--allowed-hosts) и не оставляйте агента с браузером без присмотра.

Итог

ИИ для обработки данных — это не замена скриптам, а способ получить скрипт быстрее. Агент берёт на себя разведку (понять структуру данных), написание кода (парсер на BeautifulSoup, трансформация JSON → CSV) и точечные проверки (собрать 10–20 страниц для валидации). Для помассовой обработки — скрипт, агент его написал.

Три паттерна обработки данных с агентом
Схема автора: три варианта использования агента — прямой сбор, генерация скриптов, разведка + обработка.

Три паттерна:
1. Промпт → Playwright → файл: прямой сбор данных с нескольких страниц (вакансии, расписания, цены).
2. Промпт → скрипт → запуск: парсинг HTML/JSON, трансформации, нормализация — агент пишет, вы запускаете.
3. Разведка → скрипт → обработка: на 100+ страницах агент изучает одну страницу и выдаёт скрипт для остальных.

Начните с простого: подключите Playwright MCP (claude mcp add playwright npx @playwright/mcp@latest), откройте страницу с данными, скажите «собери в CSV». Двадцать минут — и вы поймёте, где агент силён.

Дальше по серии: «Playwright MCP: даём AI-агенту браузер» — про подключение и ограничения MCP-сервера, «ИИ для баз данных» — про генерацию SQL и работу с БД через MCP, «Песочницы для ИИ-агентов» — про изолированный запуск кода, «ИИ в терминале» — про CLI-инструменты, «Что такое агентный кодинг» — фундамент серии.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Adblock
detector