Собирает контакты организаций из 2ГИС в Excel через Telegram-бота.
Вводишь запрос, выбираешь города — получаешь таблицу с телефонами, email, сайтами и рейтингами.
Возможности • Быстрый старт • Как это работает • Настройка • Лицензия
В 2ГИС миллионы организаций с телефонами, email, сайтами и отзывами. Но кнопки «Экспорт» нет. Нужен список всех сантехников в Москве или всех ресторанов в Новосибирске? Сиди копируй по одному.
Этот бот делает это за тебя. Пишешь что ищешь и в каких городах — он запускает стелс-браузер, прокручивает все результаты, кликает на каждую карточку за деталями и отдаёт готовый Excel-файл прямо в Telegram. Разворачивается на VPS через Docker за пару минут.
- Поиск по рубрике — вводишь любой запрос («рестораны», «автосервис», «стоматология»)
- Несколько городов — до 5 городов за один запрос
- Антидетект — headless Chromium через Patchright (стелс-форк Playwright)
- Бесконечный скролл — автоматически подгружает все результаты, кликает на каждую карточку
- Прогресс в реальном времени — прогресс-бар в Telegram с кнопкой отмены
- Экспорт в Excel — форматированный XLSX со всеми данными
- История экспортов — повторная загрузка мгновенно через кеш Telegram
- Контроль доступа — опциональный белый список Telegram ID
| Поле | Описание |
|---|---|
| Название | Название организации |
| Описание | Описание деятельности |
| Сайт | Официальный сайт |
| Контактный email | |
| Телефоны | Все указанные номера |
| Адрес | Улица, дом |
| Город | Город |
| Рубрика | Категория организации |
| Рейтинг | Звёзды |
| Отзывы | Количество отзывов |
git clone https://github.com/RibasomR/2gis-parser.git && cd 2gis-parser
cp .env.example .env
nano .env # Вписать BOT_TOKEN
docker compose up -dpython -m venv venv && source venv/bin/activate
pip install -r requirements.txt
patchright install chromium
cp .env.example .env # Вписать BOT_TOKEN
python bot/main.pyТипичная сессия:
Ты: /start
Бот: 👋 Отправь поисковый запрос
Ты: автосервис
Бот: 🏙️ Добавляй города (до 5 шт). Когда готово — /done
Ты: Москва
Бот: ✅ Москва добавлена (1/5)
Ты: Санкт-Петербург
Бот: ✅ Санкт-Петербург добавлен (2/5)
Ты: /done
Бот: 🔍 Превью:
Москва — 342 результата
Санкт-Петербург — 218 результатов
Итого: 560 организаций
▶️ Начать парсинг?
Ты: ✅ Старт
Бот: ⏳ Парсинг... [████████░░░░] 45% (252/560)
...
Бот: ✅ Готово! 560 организаций выгружено.
📎 автосервис_2города.xlsx
Под капотом бот запускает Chromium, имитирует действия пользователя, обходит защиту 2ГИС и собирает данные с каждой карточки. Парсинг одной карточки занимает ~3-5 секунд.
| Переменная | Обязательна | По умолчанию | Описание |
|---|---|---|---|
BOT_TOKEN |
Да | — | Токен Telegram-бота |
DB_PATH |
Нет | data/bot.db |
Путь к SQLite базе |
MAX_CITIES |
Нет | 5 |
Макс. городов за запрос |
MAX_ORGS_PER_EXPORT |
Нет | 500 |
Макс. организаций за экспорт |
PARSE_DELAY_MIN |
Нет | 3.0 |
Мин. задержка между действиями (сек) |
PARSE_DELAY_MAX |
Нет | 5.0 |
Макс. задержка (сек) |
ALLOWED_USERS |
Нет | — | Telegram ID через запятую (пусто = доступ всем) |
2gis-parser/
├── bot/ # Telegram-бот (aiogram 3.x)
│ ├── handlers/ # FSM-хендлеры (поиск, парсинг, история)
│ ├── main.py # Точка входа
│ ├── config.py # Настройки (Pydantic)
│ ├── middlewares.py # Контроль доступа, регистрация
│ └── keyboards.py # Инлайн-клавиатуры
├── parser/ # Автоматизация браузера
│ ├── scraper.py # Логика парсинга 2ГИС (Patchright)
│ ├── browser.py # Управление жизненным циклом браузера
│ └── models.py # Модели данных
├── db/ # SQLite база
│ ├── engine.py # Асинхронное подключение
│ ├── models.py # Модели БД
│ └── schema.sql # Схема
├── export/ # Генерация Excel
│ └── excel.py # Форматирование XLSX
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
- Python 3.10+ — async/await
- aiogram 3.x — Telegram Bot API
- Patchright — антидетект-форк Playwright (headless Chromium)
- SQLite + aiosqlite (WAL mode)
- openpyxl — генерация Excel
- pydantic-settings — конфигурация
- Docker — деплой
- 2ГИС использует обфусцированные CSS-классы, которые меняются при каждом обновлении сайта. Если парсинг сломался — нужно обновить селекторы в
parser/scraper.py - Рекомендуется запускать на VPS с датацентровым IP
- Используйте ответственно и с уважением к ресурсам 2ГИС
Проект распространяется под лицензией MIT.