перейти к содержанию

Как очистить данные с Карт Google: неофициальное руководство по API

Благодаря более чем 200 миллионам компаний и более 1 миллиарду пользователей в месяц, Карты Google стали незаменимым источником данных о местоположении. Это руководство научит вас, как извлечь выгоду из Карт Google в любом масштабе с помощью веб-скрапинга.

Введение

Карты Google предоставляют множество данных: названия компаний, адреса, номера телефонов, часы работы, отзывы клиентов, изображения, показатели популярности в реальном времени и многое другое. Эти данные могут предоставить ключевую конкурентную информацию для исследований рынка, привлечения потенциальных клиентов, таргетированной рекламы и услуг на основе местоположения.

Хотя Google предоставляет API Карт, он ограничен 100,000 7 бесплатных запросов в месяц, а дополнительные запросы стоят 1000 долларов США за XNUMX. Для более крупных проектов парсинга это может оказаться непомерно дорогим. Парсинг веб-страниц предлагает гибкую и недорогую альтернативу доступу к данным Google Maps в любом масштабе.

Веб-сбор общедоступных онлайн-данных обычно считается законным в соответствии с законодательством США, например Законом о компьютерном мошенничестве и злоупотреблениях. Тем не менее, обязательно соблюдайте Условия обслуживания Google, которые запрещают сбор данных, который является чрезмерным, нарушает работу или обходит их системы. Слишком агрессивное парсинг может привести к блокировке вашего IP-адреса.

Собирайте только те данные, которые соответствуют вашим потребностям, и не публикуйте повторно полученный контент дословно. Карты Google содержат личную информацию, такую ​​как адреса электронной почты и номера телефонов, которые необходимо анонимизировать или псевдонимизировать перед сохранением и анализом.

Соблюдение этических принципов помогает гарантировать, что парсинг веб-страниц принесет пользу обществу. Кодекс этики ACM — отличное руководство по ответственной работе с компьютером.

Ценность данных Google Maps

Вот некоторые ключевые статистические данные, которые демонстрируют огромные объемы данных, доступных на Картах Google:

  • По состоянию на 200 год на Картах Google по всему миру зарегистрировано более 2021 миллионов компаний.
  • Более 1 миллиарда активных пользователей Google Maps в месяц по всему миру.
  • Миллионы отзывов, изображений, часов работы и других данных о компаниях.
  • Показатели популярности в реальном времени для более чем 10 миллионов мест по всему миру
  • Исторические архивы изображений Street View за более чем 15 лет.

Масштабное использование этих данных может обеспечить мощную конкурентную информацию для принятия решений на основе данных.

Преодоление проблем со скрапингом

Google использует передовые системы обнаружения ботов, чтобы предотвратить злоупотребление их услугами. Вот несколько приемов, позволяющих избежать блокировки при очистке:

  • Автоматизация браузера Selenium – Имитирует реальные действия пользователя, такие как прокрутка и нажатие, путем автоматизации реального браузера, такого как Chrome. Более устойчив к обнаружению ботов, чем к запросам.
  • Доверенные – Меняйте разные IP-адреса для распределения запросов и маскировки активности. Прокси-сервисы, такие как BrightData, предлагают тысячи IP-адресов.
  • Решение капчи – Google использует reCAPTCHA v2 на Картах, что требует решения визуальных задач вручную. Такие инструменты, как Anti-Captcha, могут помочь автоматизировать это.
  • Чистые данные – Собранные данные содержат несоответствия и дубликаты, которые необходимо очистить перед анализом. Выделите время на обработку данных.

С помощью правильных инструментов и методов эти проблемы можно преодолеть и получить доступ к данным Google Maps в большом масштабе.

Парсинг Google Maps с помощью Selenium

Вот пошаговое руководство по очистке Карт Google с помощью Selenium и Python:

Установить необходимые пакеты

pip install selenium pandas numpy regex pymongo

Установка драйвера

from selenium import webdriver

driver = webdriver.Chrome()

Настройте прокси и параметры по мере необходимости.

Поиск мест

driver.get("https://www.google.com/maps/search/restaurants+in+Los+Angeles")

Извлечение данных

Используйте селекторы элементов для извлечения ключевых полей:

places = driver.find_elements(By.CLASS_NAME, "section-result")

names = [place.find_element(By.CLASS_NAME, "section-result-title").text for place in places]

addresses = [place.find_element(By.CLASS_NAME, "section-result-location").text for place in places]

place_urls = [place.find_element(By.CSS_SELECTOR, "a.section-result-action-icon").get_attribute("href") for place in places]

Нажмите на каждое место, чтобы получить дополнительные данные, например отзывы:

for url in place_urls:
    driver.get(url)

    reviews = driver.find_elements(By.CLASS_NAME, "section-review-text")

Непрерывная ротация прокси

Чтобы очистить масштаб, прокси необходимо циклически запускать, чтобы избежать обнаружения:

from brightdata.brightdata_service import BrightDataService

resolver = BrightDataService.create_proxy_resolver() 

while True:
    driver.quit()
    driver = webdriver.Chrome(resolver=resolver)
    driver.get(next_url)

Это позволяет надежно парсить тысячи локаций.

Google предоставляет данные о популярности мест в реальном времени через конечную точку API. Пример ответа:

"popularTimes": [
  {
   "day": 0,
   "data": [  
     {"hour": 8, "percent": 24},
     {"hour": 9, "percent": 100},  
     {"hour": 10, "percent": 88},
   ]
  }
] 

Поле процентов содержит показатель текущей занятости в диапазоне от 0 до 100. Вот как его извлечь в Python:

import requests
import pandas as pd

api_url = place_url + "/data/details/json" 

times_data = requests.get(api_url).json()["popularTimes"] 

df = pd.DataFrame(times_data)[["day","hour","percent"]]

Визуализация этих данных может выявить недельные закономерности.

Очистка изображений

Страницы мест содержат галереи изображений, которые можно очистить:

images = driver.find_elements(By.CLASS_NAME, "section-image")

image_urls = [img.get_attribute("src") for img in images]

Данные о местоположении, такие как широта и долгота, закодированы в URL-адресах.

Хранение данных в масштабе

Для больших парсеров MongoDB — отличный выбор в качестве хранилища по сравнению с CSV или листами Excel. Некоторые рекомендации:

  • Используйте схему документа NoSQL, чтобы обеспечить гибкость при изменении полей.
  • Создавайте индексы для полей, которые вы запрашиваете, например названий компаний или местоположений.
  • Кодируйте геоданные, например точки, вместо адресов для геопространственного поиска.
  • Запланируйте регулярное резервное копирование, поскольку при очистке данных со временем накапливаются данные.

Вот пример кода вставки:

from pymongo import MongoClient

client = MongoClient()
db = client["google_maps"]
places = db["places"] 

post = {
    "name": name,
    "url" : url,
    "address": address,
    "location": {
        "type": "Point",  
        "coordinates": [lat, lng]
    },
    "images" : image_urls
}

places.insert_one(post)

Анализ и визуализация

После сбора данных реальная ценность возникает в результате анализа и визуализации. Вот некоторые примеры:

Тип анализаОписаниеБиблиотеки
Анализ настроенийВыявите положительные и отрицательные темы в отзывах.НЛТК, Текстблоб
Тематическое моделированиеОткройте для себя актуальные темы из обзоров с помощью LDA.Генсим, pyLDAvis
Распознавание изображенийИзвлечение текста из меню и других изображений с помощью OCROpenCV, питессеракт
Геопространственный анализВизуализируйте данные, наложенные на карты для анализа.Фолиум, Плотли Экспресс

Расширенный анализ предоставляет конкурентную информацию для принятия бизнес-решений.

Случаи использования

Собранные данные Google Maps позволяют использовать мощные геолокационные сервисы:

  • Исследования рынка – Сравните популярность и настроения конкурентов в разных регионах.
  • Лидогенерация – Создайте целевые списки адресов электронной почты и телефонов для информационно-пропагандистской работы.
  • Выбор сайта – Оптимизируйте новые локации на основе демографических данных и пешеходного трафика.
  • Реклама – Создавайте гиперлокальные рекламные кампании на основе движений клиентов.
  • Прогнозирование спроса – Прогнозируйте посещаемость магазинов, чтобы оптимизировать штат сотрудников на выходные.
  • Логистический – Построение оптимальных маршрутов доставки на основе данных о трафике в режиме реального времени.

Это лишь некоторые примеры того, как данные Google Maps, полученные из Интернета, могут стимулировать инновации и рост.

Заключение

В то время как Google Maps предоставляет ограниченный бесплатный API, веб-скрапинг предлагает полный доступ к данным карты в любом масштабе. При ответственном использовании эти методы позволяют отдельным лицам и организациям использовать возможности данных о местоположении для получения конкурентных преимуществ.

Мировая информация нанесена на карту – она здесь. А теперь иди и возьми это!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *