- 5 шагов
- Мастер обогащения с подсказками
- 4
- Формата экспорта (JSON / CSV / TSV / JSONL)
- Лицензия
- Выпущено как подписанное Windows-приложение
Технологии
- Python
- Flask
- React
- Playwright
- Scrapling
- Google Maps
- SMTP
- PyInstaller
Задача
Отделам продаж и операционным командам нужны обогащённые контактные данные — почта, телефоны, ссылки на соцсети — собранные с тысяч сайтов компаний, а также надёжный способ восполнить множество записей, у которых сайта вообще нет. Вручную это не масштабируется, а готовые инструменты не умеют аккуратно возвращать данные в существующую CMS.
Подход
Я построил бэкенд на Flask, Playwright и Scrapling с фронтендом на React. Он берёт данные из headless CMS или вставленного списка URL, извлекает почты, телефоны и ссылки на соцсети с определением языка и повторными попытками обхода, а также включает поиск сайтов через Google Maps, который запускается до обогащения и восполняет недостающие адреса. SMTP-проверка отсеивает мёртвые адреса, визуальный конструктор фильтров собирает запросы к CMS без написания JSON, а результаты выгружаются в JSON / CSV / TSV / JSONL через REST API или отправляются обратно в CMS. Весь комплекс упакован для коммерческого распространения как лицензируемое Windows-приложение с подписанной системой лицензий для каждого клиента.
Результаты
Реальный продукт, поставленный клиентам — от обхода сайтов до проверенных и выгружаемых данных. Пошаговый мастер (источник → подключение → поля → обогащение → экспорт) делает его доступным для не-разработчиков, визуальный конструктор фильтров заменяет написание запросов вручную, а слой лицензирования сделал распространение по клиентам безопасным.
Инженерные решения
- Два источника — коллекция headless CMS (Directus) или вставленный список URL.
- Извлекает почты, телефоны и ссылки на соцсети с определением языка и повторными попытками обхода.
- Поиск сайтов через Google Maps (до обогащения) восполняет недостающие сайты компаний через stealth-загрузчик Scrapling.
- SMTP-проверка почты и визуальный конструктор фильтров с перетаскиванием для запросов к CMS.
- Упаковано для коммерческого распространения как лицензируемое Windows-приложение с системой лицензий на ключевых парах для каждого клиента (выдача / отзыв).
Скриншоты и схемы
Реальные снимки интерфейса и графики — исходный код закрыт, бренды клиентов не показаны.
Подробный разбор
Комплекс намеренно разделён на этап до обогащения и этап обогащения. У многих исходных записей сайта нет вовсе, поэтому сначала поиск через Google Maps сопоставляет карточку компании с её настоящим сайтом; и только затем пайплайн обогащения обходит страницы, извлекает, проверяет и выгружает данные. Каждый этап поддерживает остановку и продолжение с живым прогрессом, а это важно, когда запуск охватывает тысячи URL.
На стороне извлечения обработчик контактов находит почты, телефоны и профили в соцсетях с определением языка и логикой повторов, а SMTP-проверка отсекает недоставляемые адреса ещё до выгрузки. Поставка в виде подписанного лицензируемого исполняемого файла для Windows — собранного через PyInstaller и защищённого системой лицензий на ключевых парах — превратила внутренний инструмент в распространяемый коммерческий продукт.