Какую задачу решали
Ручной сбор контактов — это часы копипаста
B2B-продажи начинаются с контактов. Чтобы найти автосервисы Москвы с телефонами и сайтами, менеджер открывает 2GIS, копирует телефоны, потом Яндекс.Карты — смотрит рейтинг, потом EGRUL — проверяет ИНН. Три вкладки, час работы, 30 контактов.
Данные разрознены. Яндекс даёт рейтинг, 2GIS — телефон и часы работы, EGRUL — ОГРН и выручку, HH.ru — вакансии компании. Ни один источник не даёт полную картину. Склеить их вручную — ад.
Готовые SaaS-инструменты закрыты, не кастомизируются, не отдают сырые данные. Под капот не залезешь.
Архитектура платформы
Ядро — асинхронный параллельный движок на Python 3.12. Все источники запускаются одновременно через asyncio.gather с семафором-троттлингом. После сбора: нормализация → дедупликация → OSINT-обогащение → лид-скоринг → экспорт.
CLI (Typer)
22 команды. Поиск, мультигород, OKVED, OSINT, прокси, геокодинг, мерж. Для автоматизации и скриптов.
Web Dashboard
Flask SPA на :5000. Тёмная тема, поиск, мультигород, история, экспорт в браузере. Self-contained в одном файле.
REST API
Flask на :8080. /api/search, /api/multi-city, /api/stats, /api/export-db. Интеграция в любые пайплайны.
9 источников данных
Каждый источник — отдельный адаптер со своей стратегией обхода защиты. Playwright для динамических карт, Selenium для Яндекс.Карт, чистые API где возможно, regex-парсинг HTML где API нет.
Название, адрес, телефон, сайт, рейтинг, категория, координаты. Regex-парсинг карточек, обход динамической подгрузки через скролл.
Название, адрес, категория, телефон, сайт, рейтинг, количество отзывов. CSS-селекторы карточек, undetected-chromedriver.
Название, адрес, телефон, сайт, категория, рейтинг, часы работы. API-first с Selenium-фолбэком при блокировке.
Название, телефон, сайт, категория, рейтинг, отзывы. Playwright + regex-парсинг. Отзывы из JSON-LD.
Объявления, цены, продавцы. Категориальный поиск. Playwright с anti-detection.
Вакансии, работодатели, зарплаты, требования. REST API. Анализ рынка труда по отраслям.
ИНН, ОГРН, ОКВЭД, наименование юрлица, адрес, выручка, дата регистрации. bo.nalog.gov.ru API.
600+ кодов ОКВЭД с описаниями. Поиск компаний по отраслям. Обратный поиск кода по ключевому слову. Поиск по ИНН.
Парсинг публичных Telegram-каналов (t.me/s, без API-ключа). Поиск заказов на сайты в 20+ фриланс-каналах по ключевым словам. Извлечение телефонов и @username из текста постов. Уведомления о топ-лидах через Telegram Bot.
OSINT-обогащение: 12 модулей
Собранных контактов мало — их надо обогатить. 7 OSINT-модулей запускаются параллельно и дополняют карточку компании: email'ы, соцсети, утечки, инфраструктура. Ещё 5 модулей — LPR (поиск decision-maker), DaData, WhatsApp, сбор контактов с сайта, пайплайн-оркестратор.
Email'ы, поддомены, имена сотрудников из поисковиков и публичных источников.
Оператор связи, страна, регион, тип линии. Проверка наличия в соцсетях.
На каких сайтах зарегистрирован email (120+ платформ). Без уведомления владельца.
Корпоративные email'ы по домену. Паттерн, confidence, имя и фамилия.
Поиск username по 25+ соцсетям. Профили, URL'ы, аватарки.
Проверка email в базе утечек. Какие данные утекли и когда.
Открытые порты, сервисы, версии софта, уязвимости. IP, ISP, страна, город, ОС. Поиск по домену/IP.
LPR — поиск принимающего решения
Поиск ФИО руководителя и его должности через nalog.ru API + веб-скрапинг. Ключевое для B2B-продаж — звонить не на ресепшен, а директору.
DaData + WhatsApp + контакты с сайтов
DaData — стандартизация адресов, полное наименование юрлица, ОКВЭД по ИНН. WhatsApp — проверка доступности номера. Contacts — сбор email'ов и телефонов с сайта компании.
Лид-скоринг: от сырых данных к горячим лидам
500 контактов — это много. Какие из них горячие? Система лид-скоринга оценивает каждый контакт по 7 факторам и присваивает тир от A (hot) до D (research).
Anti-detection: почему это сложнее, чем кажется
Google и Яндекс не любят парсеры. После 3-5 запросов без маскировки — капча, а потом и блокировка по IP. Промышленный парсинг требует многослойной защиты.
Browser Pool
Undetected-chromedriver для Selenium. Selenium-stealth для Playwright. Отдельный контекст на каждый источник. Автоочистка.
Ротация прокси
Автосбор бесплатных прокси из 8 источников. Валидация (latency + работоспособность). Ротация при отказе. Blacklist после 3 фейлов.
Джиттер задержек
Случайные задержки между запросами (0.5-3с с множителем ±50%). Имитация человеческого поведения. Настройка под каждый источник.
Сбор капчи
Интеграция с rucaptcha/2captcha. Автоматический разбор reCAPTCHA v2, hCaptcha, изображений. До 3 повторов при ошибке.
15 подпроектов-парсеров
Кроме ядра платформы, в проекте живут 15 самостоятельных парсеров. Каждый — отдельный продукт со своим UI, логикой обхода защиты, форматом вывода. Некоторые pip-installable, некоторые с GUI, некоторые с Docker-деплоем.
GUI (Tkinter+PySimpleGUI) + CLI. Chrome-обход с головным режимом. 16+ стран. CSV/XLSX/JSON/HTML. Две версии: оригинальная и new (c Web UI + Flask).
Парсер недвижимости CIAN.ru. CloudFlare bypass (CloudScraper). Квартиры/новостройки/загородные. Фильтры по комнатам, цене, метро. 54 страницы макс (~1 512 объявлений).
Мониторинг новых объявлений в реальном времени. GUI + CLI + Docker. Telegram + VK-уведомления. До 100 отслеживаемых URL (безлимит в CLI).
Анализ рынка вакансий. Зарплаты, скиллы, классификация. ML-предиктор зарплат для вакансий без цены. Конвертация валют (RUB/USD/EUR/UAH). Графики (matplotlib).
Сбор отзывов с 4 платформ: 2GIS + Google Maps + Yandex + Zoon. Извлечение трендов (позитивные/негативные ключевые слова). Готовые скрипты для каждой платформы.
Сбор организаций по категориям и районам. Двухшаговый: link_parser (сбор URL'ов) → info_parser (сбор данных со страниц). Разбивка по категориям в JSON.
Поиск компаний РФ по 25 кодам ОКВЭД. Три шага: bo.nalog.gov.ru → datanewton.ru (ФИО руководителя) → реестр ФСТЭК (лицензии). 17 колонок в Excel. Адаптивная параллельность.
Yandex Reviews — pip-installable парсер отзывов (ChromeDriver + Docker). EGRUL — PHP-парсер PDF-выписок из налоговой. Google Maps Scraper — Electron-приложение (2.8K+ звёзд на GitHub). Maigret, Holehe, Sherlock, PhoneInfoga — OSINT-инструменты, интегрированные в enrich-пайплайн.
Docker-деплой из коробки
Два сервиса в docker-compose: parser (Flask-дашборд на :5000) и scheduler (автоматический перезапуск поисков каждые 24 часа). Общие вольюмы для данных и конфига.
Python 3.12-slim образ с предустановленным Playwright Chromium. 26 Python-зависимостей включая undetected-chromedriver, selenium-stealth, fake-useragent для обхода защиты.
Нужна автоматизация сбора данных?
Спроектируем и запустим парсер под вашу задачу. 9 источников, OSINT-обогащение, экспорт в CRM. От разового поиска до автономного 24/7 сбора.