Вопрос или проблема
Существует ли проект на GitHub (на Python) или что-то подобное, что я могу использовать для автоматического запроса мест в Google Maps в городах? Чтобы получить список URL таких мест?
Я не могу использовать Google API или что-то подобное. Это не работает. Но есть ли какое-то другое автоматическое решение?
Теоретически вы могли бы использовать инструмент RPA для этого. Существует проект на Python, размещенный на GitHub, доступный по адресу https://github.com/tebelorg/RPA-Python
Как вы можете видеть, довольно легко открыть браузер, ввести адрес и прочитать тег на результирующей странице:
import rpa as r
r.init()
r.url('https://maps.google.com/maps?q=ваш_запрос')
# добровольный шаг для поиска по сайту
r.type('searchboxinput', 'ваш_запрос[enter]')
result = r.read('это_будет_задача')
r.close()
# теперь вам нужно разобрать результат, чтобы привести его к желаемому формату
Тем не менее, если вам удастся написать этот код (возможно, вы дойдете до того момента, когда сможете разобрать результаты поиска) и создать список желаемых элементов, все равно возникнет проблема: Google имеет довольно жесткую защиту от роботов, которую вы не сможете преодолеть с помощью RPA. В этом моменте вы можете вмешаться и решить задачу самостоятельно (обычно это задача с кликами по картинкам), но это просто разрушает вашу мечту об автоматизации. В любом случае, есть способы, как можно частично решить эту проблему, добавляя случайные задержки и другие подобные вещи, которые делают живые люди, но это не стоит затрат.
Существуют также и другие картографические сервисы, которые можно автоматизировать (с помощью RPA) гораздо легче, такие как https://www.openstreetmap.org/, но, насколько мне известно, большинство из них все равно требует API для программного взаимодействия, хотя OSM определенно лучше для RPA, поскольку теги на сайте более доступны для разбора.
Ответ или решение
К сожалению, автоматическое извлечение данных о местах из Google Maps без использования API может быть затруднительным из-за строгих мер против ботов, применяемых Google. Однако есть несколько способов, которые вы можете рассмотреть для решения вашей задачи.
Использование RPA (Robotic Process Automation)
Вы можете воспользоваться инструментами автоматизации, такими как RPA. Один из доступных проектов на GitHub – это RPA-Python. Этот проект позволяет автоматизировать взаимодействие с веб-страницами, в том числе с Google Maps.
Вот пример кода на Python, который демонстрирует основную идею:
import rpa as r
# Инициализация RPA
r.init()
# Открытие Google Maps с вашим запросом
r.url('https://maps.google.com/maps?q=ваш_запрос')
# Поиск на странице
r.type('searchboxinput', 'ваш_запрос[enter]')
# Чтение результатов (теги будут уникальны для вашего запроса)
result = r.read('ваш_тег_результата') # Замените на правильный селектор
# Закрытие RPA
r.close()
# Здесь вам нужно будет обработать результат и отформатировать его в нужный вам вид
Важные замечания
-
Антиботовая защита: Google имеет серьезные меры защиты от автоматического извлечения данных. В большинстве случаев вам придется решать CAPTCHA или другие вызовы, чтобы обойти эту защиту, что значительно усложняет процесс автоматизации. Используйте методы, такие как случайные задержки, чтобы сделать ваше поведение более похожим на человеческое, но помните, что это не всегда может сработать.
-
Ограничения других платформ: Вы можете рассмотреть возможность использования других картографических сервисов, таких как OpenStreetMap, которые могут быть более дружелюбны к автоматизации. Тем не менее большинство сервисов также требуют API для взаимодействия с ними.
-
Соблюдение правил использования: Необходимо помнить о законодательных и этических аспектах использования данных. Извлечение данных с веб-сайтов без разрешения может нарушать условия предоставления услуг, и вы должны быть осторожны при использовании таких методов.
Заключение
Автоматический сбор данных с Google Maps без API может быть крайне сложным из-за многообразия факторов, включая защиту от ботов. Рассмотрите возможность использования RPA для управления браузером, но будьте готовы к трудностям, связанным с обнаружением автоматизированного трафика. Возможно, вам стоит рассмотреть другие картографические сервисы, где автоматизация осуществима проще.