Продуктовый кейс

Parser Combine —
комбайн для сбора
бизнес-данных

Построили универсальную платформу для промышленного парсинга из 528 Python-модулей. 9 источников данных, 7 OSINT-модулей обогащения, лид-скоринг, anti-detection инфраструктура и 15 независимых подпроектов-парсеров под одной крышей.

Python 3.12 Playwright Selenium Flask asyncio SQLite WAL Docker
Parser Combine Dashboard — Flask :5000
Total Entries
12,847
With Phone
8,923
With Website
5,410
With Email
2,156
#NameSourcePhoneRating
1Автосервис на Ленинаgoogle_maps+7 (495) 123-45-674.7
2Автосервис-24gis2+7 (495) 234-56-784.3
3Автомастерyandex_maps+7 (495) 345-67-894.5
4Экспресс-Сервисzoon3.9
...и ещё 46 записей
[OK] google_maps: 14 entries | yandex_maps: 12 entries | gis2: 18 entries | zoon: 6 entries | DB: 42 new, 8 duplicates

Какую задачу решали

Ручной сбор контактов — это часы копипаста

B2B-продажи начинаются с контактов. Чтобы найти автосервисы Москвы с телефонами и сайтами, менеджер открывает 2GIS, копирует телефоны, потом Яндекс.Карты — смотрит рейтинг, потом EGRUL — проверяет ИНН. Три вкладки, час работы, 30 контактов.

Данные разрознены. Яндекс даёт рейтинг, 2GIS — телефон и часы работы, EGRUL — ОГРН и выручку, HH.ru — вакансии компании. Ни один источник не даёт полную картину. Склеить их вручную — ад.

Готовые SaaS-инструменты закрыты, не кастомизируются, не отдают сырые данные. Под капот не залезешь.

Было → Стало
Ручной сбор
3+ часа на 30 контактов. 8 вкладок. Копипаст. Ошибки в телефонах.
Parser Combine
5 минут на 500+ контактов. 9 источников в параллель. Чистые данные. Экспорт в CRM.
528
Python-модулей
69 ядро + 459 скраперы
9
источников данных
параллельный сбор
7+5
OSINT-модулей
обогащение данных
15
подпроектов
независимых парсеров

Архитектура платформы

Ядро — асинхронный параллельный движок на Python 3.12. Все источники запускаются одновременно через asyncio.gather с семафором-троттлингом. После сбора: нормализация → дедупликация → OSINT-обогащение → лид-скоринг → экспорт.

9 источников
параллельно
Нормализация
телефоны, email
Дедупликация
MD5 fingerprint
OSINT
7 модулей
Лид-скоринг
A/B/C/D
Экспорт
CSV/XLSX/JSON

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 нет.

Google Maps
Playwright

Название, адрес, телефон, сайт, рейтинг, категория, координаты. Regex-парсинг карточек, обход динамической подгрузки через скролл.

Yandex Maps
Selenium

Название, адрес, категория, телефон, сайт, рейтинг, количество отзывов. CSS-селекторы карточек, undetected-chromedriver.

2GIS
API + Selenium

Название, адрес, телефон, сайт, категория, рейтинг, часы работы. API-first с Selenium-фолбэком при блокировке.

Zoon.ru
Playwright

Название, телефон, сайт, категория, рейтинг, отзывы. Playwright + regex-парсинг. Отзывы из JSON-LD.

Avito
Playwright

Объявления, цены, продавцы. Категориальный поиск. Playwright с anti-detection.

HH.ru
API

Вакансии, работодатели, зарплаты, требования. REST API. Анализ рынка труда по отраслям.

EGRUL
requests

ИНН, ОГРН, ОКВЭД, наименование юрлица, адрес, выручка, дата регистрации. bo.nalog.gov.ru API.

OKVED Классификатор
встроенный

600+ кодов ОКВЭД с описаниями. Поиск компаний по отраслям. Обратный поиск кода по ключевому слову. Поиск по ИНН.

Telegram Orders
t.me/s scraping

Парсинг публичных Telegram-каналов (t.me/s, без API-ключа). Поиск заказов на сайты в 20+ фриланс-каналах по ключевым словам. Извлечение телефонов и @username из текста постов. Уведомления о топ-лидах через Telegram Bot.

OSINT-обогащение: 12 модулей

Собранных контактов мало — их надо обогатить. 7 OSINT-модулей запускаются параллельно и дополняют карточку компании: email'ы, соцсети, утечки, инфраструктура. Ещё 5 модулей — LPR (поиск decision-maker), DaData, WhatsApp, сбор контактов с сайта, пайплайн-оркестратор.

theHarvester

Email'ы, поддомены, имена сотрудников из поисковиков и публичных источников.

PhoneInfoga

Оператор связи, страна, регион, тип линии. Проверка наличия в соцсетях.

Holehe

На каких сайтах зарегистрирован email (120+ платформ). Без уведомления владельца.

Hunter.io

Корпоративные email'ы по домену. Паттерн, confidence, имя и фамилия.

Maigret

Поиск username по 25+ соцсетям. Профили, URL'ы, аватарки.

HIBP

Проверка email в базе утечек. Какие данные утекли и когда.

Shodan

Открытые порты, сервисы, версии софта, уязвимости. IP, ISP, страна, город, ОС. Поиск по домену/IP.

LPR — поиск принимающего решения

Поиск ФИО руководителя и его должности через nalog.ru API + веб-скрапинг. Ключевое для B2B-продаж — звонить не на ресепшен, а директору.

DaData + WhatsApp + контакты с сайтов

DaData — стандартизация адресов, полное наименование юрлица, ОКВЭД по ИНН. WhatsApp — проверка доступности номера. Contacts — сбор email'ов и телефонов с сайта компании.

Лид-скоринг: от сырых данных к горячим лидам

500 контактов — это много. Какие из них горячие? Система лид-скоринга оценивает каждый контакт по 7 факторам и присваивает тир от A (hot) до D (research).

Факторы скоринга
Телефон
25
Сайт
20
Email
20
ИНН
15
LPR (ФИО руководителя)
15
Адрес
10
Рейтинг
10
A
Hot (80+)
Телефон + сайт + email + ИНН + LPR. Готов к звонку.
B
Warm (60-79)
Телефон + сайт. Можно работать.
C
Cold (40-59)
Только телефон. Нужен дообзвон.
D
Research (<40)
Минимум данных. На исследование.
Экспорт в CRM-формате: CSV/XLSX с колонками Company, Phone, Website, Email, INN, Decision Maker, Position, Rating, Reviews

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-деплоем.

2GIS Parser 86+ .py файлов

GUI (Tkinter+PySimpleGUI) + CLI. Chrome-обход с головным режимом. 16+ стран. CSV/XLSX/JSON/HTML. Две версии: оригинальная и new (c Web UI + Flask).

CIAN Parser pip install cianparser

Парсер недвижимости CIAN.ru. CloudFlare bypass (CloudScraper). Квартиры/новостройки/загородные. Фильтры по комнатам, цене, метро. 54 страницы макс (~1 512 объявлений).

Avito Parser 42 .py файла

Мониторинг новых объявлений в реальном времени. GUI + CLI + Docker. Telegram + VK-уведомления. До 100 отслеживаемых URL (безлимит в CLI).

HH.ru Research 7 .py файлов

Анализ рынка вакансий. Зарплаты, скиллы, классификация. ML-предиктор зарплат для вакансий без цены. Конвертация валют (RUB/USD/EUR/UAH). Графики (matplotlib).

Review Parser 4 платформы

Сбор отзывов с 4 платформ: 2GIS + Google Maps + Yandex + Zoon. Извлечение трендов (позитивные/негативные ключевые слова). Готовые скрипты для каждой платформы.

Yandex Maps Parser link + info + soup

Сбор организаций по категориям и районам. Двухшаговый: link_parser (сбор URL'ов) → info_parser (сбор данных со страниц). Разбивка по категориям в JSON.

OKVED Parser 3-шаговый конвейер

Поиск компаний РФ по 25 кодам ОКВЭД. Три шага: bo.nalog.gov.ru → datanewton.ru (ФИО руководителя) → реестр ФСТЭК (лицензии). 17 колонок в Excel. Адаптивная параллельность.

Ещё 7: Yandex Reviews, EGRUL (PDF), Google Maps Scraper, Maigret, Holehe, Sherlock, PhoneInfoga

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 для обхода защиты.

2
сервиса
26
зависимостей
24h
интервал
# docker-compose.yml
version: "3.9"
# parser — Web Dashboard
services.parser:
command: dashboard --host 0.0.0.0 --port 5000
ports: "5000:5000"
# scheduler — автосбор каждые 24 часа
services.scheduler:
command: schedule --interval 24
profiles: [scheduler]
# restart: unless-stopped на обоих

Нужна автоматизация сбора данных?

Спроектируем и запустим парсер под вашу задачу. 9 источников, OSINT-обогащение, экспорт в CRM. От разового поиска до автономного 24/7 сбора.

gaspar.rus@yandex.ru