Как собрать базу компаний с Google Maps без лишней головной боли
Знакомая история: нужно быстро накидать список кафе, барбершопов или IT-компаний в конкретном городе с их телефонами, рейтингами и временем работы. Можно полдня копипастить данные вручную, а можно зайти на GitHub и найти инструмент, который сделает это за вас. Недавно наткнулся на репозиторий Google-Maps-Scrapper, который решает эту задачу довольно элегантно.
Проект собрал уже больше тысячи звезд, что для узкоспециализированного скрипта на Python — серьезный показатель. Автор, Зохайб Башир, собрал инструмент на базе Playwright. Главное преимущество здесь — имитация действий реального пользователя в браузере, что помогает обходить некоторые ограничения Google.
Что умеет этот скрапер
Скрипт не просто вытягивает название и адрес. Он заходит «вглубь» карточки каждой компании и достает максимум полезной информации.
Вот что вы получите на выходе в CSV-файле:
- Название бизнеса и его тип (ресторан, магазин, сервис).
- Прямые контакты: номера телефонов и ссылки на сайты.
- Социальные доказательства: количество отзывов и средний рейтинг.
- Режим работы: скрипт парсит часы работы на всю неделю.
- Особенности обслуживания: есть ли доставка, самовывоз или покупки в магазине.
Интересная деталь: скрипт также пытается вытащить короткое описание (Introduction), если оно заполнено в профиле компании. Это полезно, если вы делаете какой-то агрегатор или каталог и вам нужно краткое резюме для карточки объекта.
Техническая сторона вопроса
Инструмент написан на Python. Есть один важный нюанс, который сразу бросается в глаза в документации: автор не рекомендует последние версии Python. Лучше всего использовать 3.8 или 3.9. Это связано с тем, что некоторые зависимости (библиотеки) могут капризничать на свежих релизах 3.10+.
В репозитории три ветки. Основная (main) считается самой стабильной. Есть ветка Latest Libraries для тех, кто любит эксперименты с обновленными пакетами, и отдельная ветка для пользователей Linux, если основной код вдруг начнет выдавать ошибки в этой среде.
Как запустить процесс
Подготовка стандартная для Python-проектов. Клонируем репозиторий, ставим зависимости и, так как мы работаем с Playwright, устанавливаем браузеры:
git clone https://github.com/zohaibbashir/Google-Maps-Scrapper.git
cd google-maps-scraper
pip install -r requirements.txt
playwright install
Сам запуск выглядит как обычная команда в терминале. Например, если вы ищете турецкие рестораны в Торонто и хотите собрать данные по первым 20 заведениям:
python main.py -s "Turkish Restaurants in Toronto Canada" -t 20
Флаг -t ограничивает количество результатов, а -o позволяет задать имя выходного файла. Если у вас уже есть какой-то список и вы хотите добавить в него новые данные, используйте параметр --append. Это удобно, когда нужно собрать информацию по разным районам или категориям в один большой файл.
Нюансы и «подводные камни»
Важно понимать, что это не «тихий» парсинг. Скрипт запускает видимое окно браузера. Это сделано специально: Google Maps очень не любит, когда к нему стучатся роботы в headless-режиме (без графического интерфейса).
В моей практике скрапинга подобные инструменты всегда живут в состоянии «гонки вооружений». Google периодически меняет верстку или названия классов в HTML-коде. Автор честно предупреждает об этом в README: если скрипт перестал находить данные, скорее всего, пора заглянуть в main.py и обновить XPath-запросы.
Еще один совет — не стоит запускать сбор данных на 10 000 позиций за один раз без пауз. Google быстро поймет, что вы слишком активны для обычного человека, и может временно заблокировать доступ по IP.
Кому пригодится этот инструмент
В первую очередь — маркетологам и специалистам по продажам для быстрого сбора лидов. Также это отличное подспорье для аналитиков, которые изучают плотность конкуренции в определенных районах.
Проект подкупает своей простотой. Вам не нужно разбираться в сложном API Google Maps (и платить за него). Если вам нужно разово или периодически собирать небольшие объемы данных, Google-Maps-Scrapper — вполне рабочий вариант, который экономит кучу времени. Только помните про этику сбора данных и не злоупотребляйте частотой запросов.
