Розробка парсера контактних даних з відкритих джерел
Уявіть: потрібно зібрати 10 000 контактів з сайтів компаній для холодної розсилки. Вручну — це кілька тижнів виснажливого копіювання. Готові сервіси збирають лише 60% даних, решта — сміття. Ми розробляємо парсери контактних даних, які автоматично вилучають email, телефони, адреси та профілі з відкритих джерел: бізнес-каталогів, сайтів компаній і галузевих довідників. Технічна складність у тому, що структура джерел відрізняється кардинально. Дані можуть бути в нестандартному HTML, приховані за JavaScript-рендерингом або захищені від автоматичного збору. За 5+ років ми реалізували понад 30 таких проєктів, тому знаємо всі підводні камені.
Готові рішення часто не працюють. Хмарні сервіси дають поверхневий збір, а самописні скрипти ламаються при зміні верстки. Ми будуємо адаптивні парсери, стійкі до структурних змін. Комбінація селекторів та fallback-стратегій гарантує стабільність збору. На відміну від конкурентів, наш парсер обробляє 1000 сторінок за 15 хвилин, що в 10 разів швидше за ручний пошук. Це знижує витрати на збір контактів у 5–10 разів.
Як влаштований архітектурно надійний парсер контактних даних?
Типовий стек включає кілька рівнів:
- 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@).
Середній час парсингу 1000 сторінок — 15 хвилин при 10 потоках. Типова помилка — використовувати лише один двигун. Для надійності ми комбінуємо Playwright для JS-сайтів і Cheerio для статики. Це знижує втрати даних на 40%.
Як ми нормалізуємо та валідуємо зібрані контакти?
Сирові дані проходять кілька етапів обробки:
- Нормалізація телефонів через libphonenumber (Google) — приведення до єдиного формату E.164
- Валідація email — DNS MX-запит до домену для перевірки існування поштового сервера
- Дедуплікація — порівняння за нормалізованими значеннями, а не за вихідними рядками
- Геокодування адрес — через Nominatim (OpenStreetMap) або Яндекс.Геокодер
Після обробки якість даних досягає 95% точності. Це підтверджено на проєктах з обсягом збору понад 10 000 контактів. Наші сертифіковані інженери налаштовують парсер під будь-які джерела.
Характеристики парсингу
| Параметр | Значення |
|---|---|
| Кількість потоків | 10 (налаштовується) |
| Швидкість збору | 1000 сторінок за 15 хв |
| Точність після валідації | 95% |
Джерела даних та складність
| Тип джерела | Приклад | Складність |
|---|---|---|
| Бізнес-каталоги | 2GIS, Яндекс.Карти (публічні дані) | Висока |
| Галузеві довідники | Будівельні, медичні портали | Середня |
| Сайти компаній | Сторінки «Контакти», «Про нас» | Низька |
| Соціальні профілі | LinkedIn, ВКонтакте (публічні) | Висока |
Для кожного типу джерела розробляються окремі spider-класи або обробники з власною логікою навігації та вилучення.
Типові помилки при розробці парсерів
Ми часто зустрічаємо такі проблеми в проєктах клієнтів:
- Використання одного User-Agent призводить до блокування за IP після кількох запитів.
- Відсутність обробки капчі зупиняє збір.
- Ігнорування robots.txt веде до юридичних ризиків.
- Зберігання даних без нормалізації плодить дублі та сміття. Ми враховуємо всі ці аспекти, тому наші парсери стабільно працюють роками.
Вивантаження та формати
Результати доступні в кількох форматах:
- CSV/XLSX — для імпорту в CRM
- JSON API — для інтеграції з внутрішніми системами
- Прямий запис у PostgreSQL/MySQL з нормалізованою схемою
Приклад структури даних у JSON
{ "source": "2gis.ru", "company": "ТОВ Ромашка", "phones": ["+7(495)123-45-67"], "emails": ["[email protected]"], "address": "м. Москва, вул. Леніна, буд. 1" } Терміни та обсяг робіт
На парсер одного-двох джерел з нормалізацією та базовим сховищем потрібно 5–8 робочих днів. Якщо потрібна масштабована система під 10+ джерел з веб-інтерфейсом управління — від 3 тижнів. Ми оцінюємо проєкт безкоштовно і надаємо фіксований кошторис.
Отримайте консультацію щодо вашого проєкту — оцінимо джерела, складність та терміни. Зв'яжіться з нами, щоб обговорити деталі. Замовте розробку парсера вже сьогодні.







