В отделе продаж «Протект-Ковка» работают 15 менеджеров, и им нужна база для обзвона: строительные подрядчики, металлобазы, торговые центры, садовые центры, ритуальные службы по всей России.
Готовые сервисы задачу не закрывали. Нужен был регулярный сбор сразу по десяткам городов, с телефонами и именами руководителей, без дублей между категориями и с готовым порядком обзвона — чтобы менеджер звонил сверху вниз, а не разбирал файл на тысячу строк.
Главное условие было не про технологии: пользоваться программой должен обычный менеджер. Выбрал города, выбрал категории, нажал кнопку, получил Excel. Без консоли, без Python, без инструкции на десять страниц.
Сделали настольную программу под Windows: окно с полями вместо чёрного экрана, запуск двойным кликом.
Города и категории выбираются галочками из официальных справочников самого 2ГИС — 155 городов и 1786 категорий, оба с поиском. Есть фильтры «только мобильные», минимальный рейтинг и поиск руководителей в открытых реестрах — рядом с каждым именем стоит пометка достоверности, чтобы менеджер не сжёг первый звонок чужим отчеством.
На выходе — Excel из четырёх листов: рабочий список с приоритетом обзвона, полный охват, исключённые дубли с причиной и журнал запуска. Дубли убираются по всей выгрузке сразу, а не внутри одной категории, — при общей базе на 15 менеджеров это снимает повторные звонки в одну организацию.
Отдельно занялись надёжностью. Сбор по всей России идёт часами без присмотра, поэтому падение одного запроса больше не рушит прогон: сбойный запрос отваливается в журнал, остальные продолжают собираться, Excel сохраняется. На пустой ответ 2ГИС программа делает автоповтор, а по завершении подаёт звуковой сигнал.
Обычно кейс о разработке заканчивается словами «всё заработало, клиент доволен». Этот — не о том.
Мы сделали парсер 2ГИС на заказ: программу, которая собирает базу компаний по городам и категориям и отдаёт готовый Excel. А потом честно записали, что сломалось при первом же запуске. Шесть багов. Ни один не был виден в коде — только в живой работе.
Если вы думаете заказать такую программу, эта статья полезнее любого списка функций. Она показывает, где обычно всё ломается.
Что сделали: программу для сбора базы компаний из 2ГИС по всей России.
Для кого: производственная компания, отдел продаж — 15 менеджеров.
Что на выходе: Excel с компаниями, телефонами, руководителями и приоритетом обзвона.
Технологии: Python, parser-2gis, Chrome DevTools Protocol, интерфейс под Windows.
Итог: 155 городов, 1786 рубрик, шесть найденных багов, одна закрытая дыра в надёжности.
Александр Журавлёв, компания «Протект-Ковка». Художественная ковка и малые архитектурные формы: скамейки, беседки, ворота, ограждения. Производство полного цикла, больше 4000 м², на рынке с 2009 года, поставки по России и СНГ.
В отделе продаж 15 менеджеров. Им нужно куда звонить.
Задача звучала просто: собрать базу потенциальных клиентов по городам России. Строительные подрядчики, металлобазы, торговые центры, садовые центры, ритуальные службы. Нужны телефоны, адреса и по возможности имена руководителей.
Главное требование было не про технологии. Пользоваться программой должен обычный менеджер. Выбрал города, выбрал категории, нажал кнопку, получил Excel. Без консоли, без Python, без инструкции на десять страниц.
Разработка парсера шла отдельной позицией в коммерческом предложении — 18 000 ₽.
Формулировка была такая:
«Не консольный скрипт, а обычная программа на компьютер: окно с полями вместо чёрного экрана. Выбираете город, категорию, лимит, включаете "только мобильные" и "искать директоров" — жмёте кнопку. Готовый Excel открывается сам».
Запомните эту цитату. Дальше она работает как чек-лист приёмки.
Черновой скрипт для консоли. Чёрный экран, вопросы в командной строке, ни одного чекбокса. Пути к программам прописаны намертво под компьютер разработчика — на другой машине не запустится. Список городов и категорий придуман вручную и ни с чем не сверен.
То есть ровно то, что в предложении было названо словом «не».
Основа при этом была нормальная. Под капотом — открытый пакет parser-2gis, который управляет браузером Chrome и читает сайт 2ГИС. Наша часть — удобная оболочка и обработка результата: убрать дубли, расставить приоритеты, добавить руководителей.
Дальше всё это нужно было довести до состояния «можно отдать человеку, который не программист».
Дальше — самая полезная часть. Все шесть багов найдены запуском программы против настоящего 2ГИС. Ни один не находится чтением кода: код выглядел правильным.
Первый же тест: Москва, строительные компании, лимит 5 организаций. Результат — пусто.
Оказалось, в коде город Москва записан как msk. А в официальном справочнике 2ГИС такого кода нет вообще — правильный moscow.
Что это значит на практике. Москва стояла городом по умолчанию. Любой человек, открывший программу впервые, нажал бы «Старт» и получил ноль компаний. И решил бы, что программа не работает.
Проверили остальной список — нашли ещё два неверных кода: Нижний Новгород и Тольятти.
Ошибки не было. Программа не падала и не ругалась. Просто молча отдавала пустоту.
Починили города — пошли реальные данные. И сразу вылез баг, который до этого негде было увидеть.
Программа расставляет компании по приоритету от A до D. Логика простая: мобильный номер — высокий приоритет, есть шанс попасть сразу на собственника или снабженца. Городской — низкий, скорее всего ответит секретарь.
Мобильными программа считала номера, начинающиеся на +79 или 79. А 2ГИС отдаёт их в формате 89 — с восьмёркой, без плюса.
Итог: настоящие мобильные массово падали в самый низкий приоритет.
Главная ценность продукта — «менеджер звонит сверху вниз по готовому списку» — не работала. При этом Excel исправно формировался, приоритеты проставлялись, в журнале ни одной ошибки. Просто список был неправильный.
Это самый показательный баг проекта. Он ничего не ломает. Он тихо обесценивает результат.
Программа выводила строку вида «Москва × Металлобазы» и падала с ошибкой кодировки.
Причина: консоль Windows по умолчанию работает не в той кодировке, которую ожидает Python. Лечится одной строкой.
Но увидеть это можно только на Windows. В терминале разработчика всё работало.
Интерфейс передавал ответы в скрипт, но они читались в разных кодировках: интерфейс писал одно, скрипт понимал другое.
Русские ответы вроде «да» на вопрос «искать директоров?» просто не совпадали с проверкой в коде.
Результат: пользователь ставит галочку, а программа делает противоположное. Снова без единой ошибки на экране.
Часть официальных рубрик 2ГИС содержит косую черту. Например, «Памятники / Надгробия» — ровно та, которая нужна Александру.
При формировании ссылки этот символ не экранировался: стандартный инструмент Python считает его законным разделителем адреса. Запрос с такой рубрикой сломался бы.
Решение нашлось в исходниках того же пакета parser-2gis — там эта задача уже была решена правильно. Заодно подключили точный фильтр по коду рубрики вместо поиска по названию.
Проект выглядел готовым к сдаче. Владелец лично проверил программу и написал: «Появляется окно и сразу сворачивается».
Разбор оказался глубже, чем выглядел.
Запуск из терминала — работает. Запуск двойным кликом по ярлыку — стабильно ломается. Один и тот же файл.
Причина такая: Windows перед выполнением файла запуска сканирует его целиком. Русские буквы в этом файле ломают сканирование — даже в той строке, до которой выполнение никогда не доходит. Мы убрали из файла запуска всю кириллицу.
И важное. Этот баг нашли не мы. Его нашёл клиент. Хотя двойной клик по ярлыку — единственный способ, которым программу вообще будут запускать.
В прототипе был список из 28 рубрик и 35 городов «до Урала». Придуманный вручную.
Сверились с задачей клиента — и обнаружили, что ключевых для него ниш там нет вообще. Ни металлобаз, ни садовых центров, ни ритуальных служб, ни памятников.
Программа для сбора базы под конкретный бизнес не умела искать четыре главные категории этого бизнеса.
Владелец сформулировал прямо:
«Сделай так, чтобы можно было выбирать, а не изобретать самому».
Полезли внутрь пакета parser-2gis — того самого, который уже использовали. И нашли там официальные справочники самого 2ГИС: полное дерево из 1786 рубрик и список из 155 городов России.
Они лежали внутри программы всё это время.
Забрали оба справочника в проект и сделали нормальный выбор: дерево рубрик с поиском, список городов с поиском, всё галочками.
Маленькая деталь напоследок. Категории «Строительные компании» — самой первой, дефолтной, той, на которой мы делали первый тест, — в 2ГИС не существует. Её тоже придумали.
В прототипе на каждую пару «город × категория» создавался отдельный лист. Выбрали 10 городов и 4 категории — получили 40 листов. Работать невозможно.
Сделали четыре листа, всегда одинаковых:
Дубли теперь убираются по всей выгрузке сразу, а не внутри одной категории. Одна и та же компания, найденная в двух категориях, попадёт в список один раз. Когда база общая на 15 менеджеров, это избавляет от повторных звонков в одну организацию.
Отдельная история — имена руководителей. Раньше в колонке стояло просто имя, без указания, откуда оно и насколько ему можно верить. Стало три варианта: «высокая», «вероятная», «не найдено».
Это принципиальный момент, а не формальность. Менеджер, который звонит и говорит «здравствуйте, Сергей Петрович» человеку с другим именем, теряет сделку в первые пять секунд. Пометка «вероятная» позволяет решить самому: называть имя или нет.
Когда всё уже выглядело готовым, владелец задал прямой вопрос: «Мы точно сделали всё по максимуму?»
На такой вопрос проще всего ответить «да». Мы пошли проверять — и нашли настоящую дыру.
Обработка каждого запроса внутри цикла никак не была защищена от сбоя. Один зависший браузер, один файл, придержанный антивирусом — и падал весь сбор целиком. Excel не сохранялся вообще. Всё, что собрано до этого, терялось.
Посчитайте масштаб. Сбор по всей России — это многочасовой прогон без присмотра. Сбой на 38-м запросе из 40 — и несколько часов работы исчезают. Не портятся, не сохраняются частично. Исчезают.
На тесте из пяти компаний эта дыра не проявляется никогда.
Что сделали:
Вся полировка интерфейса не спасала от того, что одна случайность посреди большого прогона стирала результат целиком.
| Что | Было | Стало |
|---|---|---|
| Рубрики для выбора | 28 придуманных вручную | 1786 официальных рубрик 2ГИС |
| Города | 35 «до Урала» | 155 городов России |
| Листов в Excel | по одному на каждую пару город×категория | 4 фиксированных |
| Удаление дублей | внутри одной категории | по всей выгрузке |
| Колонок в Excel | 12 | 14 |
Готовые парсеры 2ГИС на рынке есть — Apify, конструкторы выгрузок, десяток открытых проектов на GitHub. Мы их изучили специально, чтобы не изобретать заново и понять, чего в них не хватает.
Две идеи взяли себе.
Фильтр по минимальному рейтингу. Компания с рейтингом 4.5 и двумя сотнями отзывов живее, чем карточка без единого отзыва. Простой отсекающий фильтр экономит менеджеру часы.
Две бесплатные колонки. Сырая выгрузка 2ГИС отдаёт 56 полей, мы использовали 12. Добавили часы работы (важно при звонках через часовые пояса) и прямую ссылку на карточку в 2ГИС. Данные уже приходили — просто выбрасывались.
А вот чего в готовых сервисах нет и что пришлось делать под задачу:
Интеграцию с CRM и Google Sheets мы сознательно не делали, хотя у конкурентов она есть. В коммерческом предложении её не было. Делать работу сверх оплаченного объёма «в подарок» — значит размывать границу того, за что клиент заплатил.
Готовые сервисы нормально закрывают разовую выгрузку. Своя программа для сбора базы компаний окупается, если совпадает хотя бы половина пунктов:
Если совпадает пункт-два — честнее взять готовый сервис.
В этом проекте был оплачен конкретный объём, и мы за него не выходили. Но задачи вокруг сбора B2B-базы бывают шире:
Это уже область AI-автоматизации бизнес-процессов и разработки внутренних инструментов — программ, которые делаются под конкретный процесс, а не покупаются коробкой.
1. Проверять надо запуском, а не чтением.
Все шесть багов нашлись живым прогоном. Код читался и выглядел правильным. Самый жестокий пример — приоритетный список: он был сломан молча, без единой ошибки, с корректным Excel на выходе. Продукт «работал» и не делал того, за что заплачены деньги.
2. Официальные данные лучше придуманных.
Список из 28 рубрик выглядел разумно. В нём не было четырёх ключевых ниш клиента и была категория, которой не существует. А официальный справочник на 1786 позиций всё это время лежал внутри уже установленного пакета.
3. Тестировать надо так, как запускает пользователь.
Мы проверяли через терминал — всё работало. Клиент кликнул по ярлыку и нашёл баг за десять секунд.
4. Надёжность важнее функций.
Удобный интерфейс ничего не стоит, если случайный сбой посреди четырёхчасового прогона стирает результат. Самая ценная правка проекта — несколько строк защиты от сбоя. Найдена последней.
Без этого кейс был бы неполным.
На момент технического аудита существовал только черновой прототип: скрипт для консоли, пути под конкретную машину, справочник рубрик, составленный вручную. А по коммерческому предложению клиент ждал полноценную программу с окном и галочками. Разрыв между тем и другим был почти полным.
Поэтому первым делом мы не добавляли новые функции, а зафиксировали критерии приёмки и довели прототип до того, что уже было описано в предложении.
Вывод простой: чек-лист по коммерческому предложению надо составлять до начала работы, а не сверяться с ним по ходу. Каждое обещание — отдельный пункт приёмки. «Окно с полями», «четыре вкладки», «пометка достоверности», «Excel открывается сам», «без чёрного экрана» — это пять проверяемых пунктов.
Мы сверялись по ходу. Поэтому четыре листа Excel и пометка достоверности всплыли как «недоделанное» в середине проекта, а не как задача на старте.
Можно ли сделать парсер под конкретные рубрики 2ГИС?
Да. Используются официальные рубрики самого источника — в 2ГИС это дерево из 1786 позиций. Города, рубрики и фильтры настраиваются под ваши ниши.
Можно ли выгружать компании из 2ГИС в Excel?
Да, и структура файла собирается под процесс вашего отдела продаж. В этом проекте это четыре листа: рабочий приоритетный список, полный охват, исключённые дубли и журнал запуска.
Можно ли искать руководителей компаний?
Да, из открытых реестров. Важный момент: рядом с найденным именем должна стоять пометка достоверности. Выдавать любое совпадение за подтверждённое — способ сжечь менеджеру первый звонок.
Можно ли передавать базу сразу в CRM?
Да, это отдельный этап разработки: компании создаются в CRM автоматически, распределяются по менеджерам и получают статусы. В описанном проекте интеграция в оплаченный объём не входила.
Сколько стоит разработка парсера на заказ?
Зависит от источников, объёма данных, набора фильтров и интеграций. Внутренний инструмент для одного отдела и многопользовательская система — работы разного порядка. Оценка даётся после разбора задачи.
Можно ли сделать программу без консоли?
Да. Для сотрудников делается обычный графический интерфейс: поля, поиск, галочки, прогресс, запуск двойным кликом.
Насколько законен сбор данных из 2ГИС?
Собираются данные, открыто опубликованные в справочнике. Вопросы к режиму использования конкретного источника и нагрузке обсуждаются на старте, до написания кода.
Сколько компаний можно собрать за один запуск?
Ограничение задаётся лимитом на запрос и числом выбранных городов и рубрик. В этом проекте типовой прогон — несколько десятков тысяч компаний за несколько часов. Программа работает без присмотра и подаёт сигнал по завершении.
Можно ли собирать данные не только из 2ГИС?
Да. Логика та же для Яндекс.Карт, Авито, отраслевых каталогов и открытых реестров. Источник влияет на способ сбора, но структура результата и обработка — дедупликация, приоритеты, обогащение — остаются теми же.
Как программа убирает дубли между городами и рубриками?
Дубли ищутся по телефону сразу по всей выгрузке, а не внутри одной рубрики. Компания, найденная в двух рубриках, попадёт в рабочий список один раз, а её копия — на отдельный лист с указанием причины исключения.
Сколько времени занимает разработка такой программы?
Инструмент такого класса — от нескольких дней до пары недель в зависимости от числа источников, фильтров и интеграций. Основное время уходит не на код, а на живое тестирование против реального источника: именно там находятся баги, описанные выше.
Готовый сервис отдаёт список. Программа под задачу отдаёт рабочий список — отсортированный так, как звонят именно ваши менеджеры.
Если отделу продаж нужна не разовая выгрузка, а своя программа для регулярного сбора базы, мы в Deplox сделаем её под ваш процесс: нужные источники, города, рубрики, фильтры, выгрузка в Excel или интеграция с CRM.
Для предварительной оценки достаточно описать три вещи: откуда собирать компании, какие данные нужны менеджерам и что должно происходить с базой дальше.
Deplox — AI-автоматизация и разработка внутренних инструментов для бизнеса.
Реальные результаты наших клиентов в цифрах.
Оставьте контакт и кратко опишите задачу. В рабочее время разберём процесс и предложим решение.