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

AI-парсинг сайтов и каталогов через GPT: Извлечение контактов

AI-парсинг сайтов и каталогов через GPT для извлечения контактов

Заголовок раздела «AI-парсинг сайтов и каталогов через GPT для извлечения контактов»

Традиционный веб-скрейпинг, опирающийся на регулярные выражения (RegEx), XPath-запросы и строгий поиск по DOM-дереву, постепенно уступает место AI-парсингу (LLM-based Scraping). В 2026 году архитектуры сайтов стали гипердинамичными: классы генерируются случайным образом (Tailwind, CSS-in-JS), данные подгружаются асинхронно, а системы защиты вроде Cloudflare Turnstile блокируют классических ботов.

Использование больших языковых моделей (LLM), таких как GPT-4o, Claude 3.5 Sonnet или YandexGPT, в связке с Vision-моделями позволяет извлекать данные семантически. Модель “читает” страницу как человек, понимая контекст, и может находить контактные данные (телефоны, email-адреса, ссылки на мессенджеры), даже если они скрыты под нестандартными скриптами или представлены в виде изображений.


Глава 1. Эволюция скрейпинга: От DOM-деревьев к Vision-моделям

Заголовок раздела «Глава 1. Эволюция скрейпинга: От DOM-деревьев к Vision-моделям»

Ранее для сбора контактов из каталога (например, справочника компаний) разработчику требовалось проанализировать структуру HTML-кода. Если email находился в <a href="mailto:..."> или <span class="contact-email">, парсер легко его забирал. Однако сегодня компании активно защищают свои контакты от спамеров:

  • Email-адреса разбиваются на части (например, info [at] domain . com) или выводятся через JavaScript.
  • Номера телефонов генерируются в виде изображений (Canvas, SVG) или требуют клика “Показать номер”.
  • Верстка постоянно меняется из-за A/B-тестов или обновлений CMS.

AI-парсинг меняет парадигму с синтаксического извлечения на семантическое понимание. Процесс делится на несколько подходов:

  1. DOM-to-LLM (Анализ очищенного HTML/Markdown). Инструмент забирает сырой HTML, очищает его от мусорных тегов (скриптов, стилей) и конвертирует в Markdown. Этот чистый текст скармливается LLM с промптом: “Найди все упоминания email-адресов и телефонов, даже если они написаны словами, и верни в формате JSON”.

  2. Vision-based Scraping (Анализ скриншотов). Браузер (Playwright, Puppeteer) делает скриншот страницы или ее отдельных блоков. Скриншот отправляется в мультимодальную модель (например, GPT-4o). Модель способна “прочитать” номер телефона, даже если он нарисован на картинке сложным шрифтом или перекрыт водяным знаком.

  3. Autonomous Web Agents. AI-агенты, использующие такие фреймворки как LangChain или AutoGPT, способны самостоятельно навигировать по сайту. Если номер телефона скрыт за кнопкой “Показать”, агент понимает это, кликает по нужным координатам (благодаря Vision или анализу дерева доступности), дожидается подгрузки данных и извлекает их.

Часто email-адреса защищены от парсинга заменой символов: contact [at] company [dot] com или картинками. LLM легко справляются с текстовой обфускацией, восстанавливая оригинальный email. Для картинок применяются Vision-возможности GPT-4o, способные распознать текст даже с искажениями (CAPTCHA-подобная защита).

Взаимодействие со скрытыми элементами (JS-рендеринг)

Заголовок раздела «Взаимодействие со скрытыми элементами (JS-рендеринг)»

Многие каталоги (например, справочники недвижимости или B2B-порталы) скрывают телефон за кнопкой “Показать телефон”, которая выполняет AJAX-запрос. Для решения этой задачи используется связка Playwright + LLM:

  1. LLM анализирует скриншот или DOM и находит кнопку “Показать телефон”.
  2. Playwright кликает по элементу.
  3. Ожидается изменение DOM (появление новых узлов) или сетевого трафика.
  4. Извлеченный номер передается обратно в LLM для валидации.

Глава 3. Обход защит (Cloudflare, капчи) в связке AI + Headless Browsers

Заголовок раздела «Глава 3. Обход защит (Cloudflare, капчи) в связке AI + Headless Browsers»

Сайты массово внедряют защиту от ботов (Cloudflare Turnstile, Datadome, Akamai). Классические парсеры на базе requests или стандартного Selenium моментально блокируются.

В 2026 году сервисы вроде 2Captcha эволюционировали. Теперь используются локальные или API Vision-модели для решения сложных визуальных задач:

  • Выбор объектов на картинке: Vision-модель анализирует сетку изображений и возвращает координаты нужных объектов.
  • Turnstile / reCAPTCHA v3: Требуют эмуляции человеческого поведения (движение мыши, задержки). Агенты на базе LLM генерируют “человечные” паттерны курсора и скроллинга, основываясь на тепловых картах реальных пользователей.

LLM может выступать оркестратором для API антидетект-браузеров (Dolphin Anty, Multilogin), динамически меняя отпечатки (fingerprints), прокси (резидентные или мобильные) и User-Agent в зависимости от ответов сервера. Если страница выдает HTTP 403, LLM принимает решение о смене IP и перезапуске сессии.

Глава 4. Структурирование данных в JSON через API

Заголовок раздела «Глава 4. Структурирование данных в JSON через API»

Одно из главных преимуществ AI-парсинга — возможность сразу получать чистые, валидные данные (Structured Outputs).

С помощью параметра response_format в API OpenAI можно гарантировать, что модель вернет данные в строгом соответствии с JSON Schema.

{
"name": "strict_contact_schema",
"schema": {
"type": "object",
"properties": {
"company_name": { "type": "string" },
"phones": {
"type": "array",
"items": { "type": "string" },
"description": "Номера в формате +7 (XXX) XXX-XX-XX"
},
"emails": {
"type": "array",
"items": { "type": "string", "format": "email" }
},
"social_links": {
"type": "object",
"properties": {
"telegram": { "type": "string" },
"whatsapp": { "type": "string" }
}
}
},
"required": ["company_name", "phones", "emails"]
}
}

Модель сама найдет нужные данные в тексте, очистит их от лишних символов (например, уберет “тел:” перед номером) и вернет готовый JSON, который можно сразу загружать в CRM или базу данных.

  • Claude 3.5 Sonnet превосходно справляется с огромными контекстными окнами (до 200k токенов). В нее можно загрузить “сырой” исходный код всей страницы, и она найдет нужные данные быстрее и дешевле GPT-4.
  • YandexGPT отлично работает с русскоязычным контекстом и специфичными форматами адресов или телефонов РФ и СНГ.

Глава 5. Практические архитектуры и кейсы применения

Заголовок раздела «Глава 5. Практические архитектуры и кейсы применения»
  1. Crawler (Scrapy/Playwright): Собирает список URL-адресов.
  2. Scraper Service: Загружает страницу, обходит защиты, делает скриншот и/или очищает DOM.
  3. LLM Parser Node: Отправляет данные в API (OpenAI/Anthropic) для извлечения контактов по JSON Schema.
  4. Data Validator (Zod/Pydantic): Проверяет полученный JSON. В случае ошибки — повторный запрос к LLM с указанием ошибки.
  5. Storage: Сохранение в PostgreSQL или ClickHouse.
  • B2B-продажи: Ежедневный мониторинг новых компаний на агрегаторах (Яндекс.Карты, 2ГИС, B2B-порталы) для автоматического наполнения воронки холодных продаж.
  • HR-рекрутинг: Сбор профилей кандидатов с LinkedIn или Хабр Карьера, извлечение скрытых контактов из резюме.
  • Маркетинговые исследования: Анализ контактных данных конкурентов и их активности в соцсетях.

AI-парсинг через GPT и Vision-модели навсегда изменил ландшафт сбора данных. Если раньше на поддержку парсеров уходили сотни часов разработчиков (из-за изменений верстки), то теперь “умный” парсер адаптируется к изменениям автоматически. Это делает извлечение скрытых контактов масштабируемым, надежным и экономически выгодным процессом.