Разработка парсера контактных данных из открытых источников
Парсер контактных данных — это инструмент, который автоматически собирает email-адреса, номера телефонов, адреса, ссылки на социальные сети и имена из публично доступных источников: сайтов компаний, каталогов, агрегаторов, страниц-справочников. Задача технически нетривиальна: структура источников отличается кардинально, данные зашиты в нестандартный HTML, скрыты за JavaScript-рендерингом или защищены от автоматического сбора.
Архитектура парсера
Типичный стек для такого проекта:
- Playwright или Puppeteer — для страниц с динамической загрузкой контента (SPA, lazy load)
- Cheerio (Node.js) или BeautifulSoup (Python) — для статического HTML
- Scrapy с мидлварами — если нужна высокая производительность и параллельный обход
- Redis — очередь URL для обхода, дедупликация уже посещённых страниц
- PostgreSQL — хранение результатов с полнотекстовым поиском
Для извлечения контактов используются регулярные выражения с учётом региональных форматов: российские номера в форматах +7 (XXX) XXX-XX-XX, 8-XXX-XXXXXXX, международные по E.164. Email — стандартная RFC 5322 regex с постфильтрацией технических адресов (noreply@, no-reply@, mailer-daemon@).
Источники данных
Парсер настраивается под конкретные источники:
| Тип источника | Пример | Сложность |
|---|---|---|
| Бизнес-каталоги | 2GIS, Яндекс.Карты (публичные данные) | Высокая |
| Отраслевые справочники | Строительные, медицинские порталы | Средняя |
| Сайты компаний | Страницы «Контакты», «О нас» | Низкая |
| Социальные профили | LinkedIn, ВКонтакте (публичные) | Высокая |
Для каждого типа источника разрабатываются отдельные spider-классы или обработчики с собственной логикой навигации и извлечения.
Нормализация и валидация
Сырые данные проходят несколько этапов обработки:
-
Нормализация телефонов через библиотеку
libphonenumber(Google) — приведение к единому формату E.164 - Валидация email — DNS MX-запрос к домену для проверки существования почтового сервера
- Дедупликация — сравнение по нормализованным значениям, не по исходным строкам
- Геокодирование адресов — через Nominatim (OpenStreetMap) или Яндекс.Геокодер
Выгрузка и форматы
Результаты доступны в нескольких форматах:
- CSV/XLSX — для импорта в CRM
- JSON API — для интеграции с внутренними системами
- Прямая запись в PostgreSQL/MySQL с нормализованной схемой
Сроки и объём работ
На парсер одного-двух источников с нормализацией и базовым хранилищем уходит 5–8 рабочих дней. Если нужна масштабируемая система под 10+ источников с веб-интерфейсом управления — от 3 недель.







