Ir para o conteúdo

Como extrair dados do Google Maps: o guia não oficial da API

Com mais de 200 milhões de empresas listadas e mais de 1 bilhão de usuários mensais, o Google Maps tornou-se uma fonte indispensável de dados de localização. Este guia ensinará como extrair valor do Google Maps em grande escala usando web scraping.

Introdução

O Google Maps fornece uma riqueza de dados – nomes de empresas, endereços, números de telefone, horário de funcionamento, avaliações de clientes, imagens, métricas de popularidade ao vivo e muito mais. Esses dados podem fornecer insights competitivos importantes para pesquisas de mercado, geração de leads, publicidade direcionada e serviços baseados em localização.

Embora o Google forneça uma API do Maps, ela é limitada a 100,000 solicitações gratuitas por mês, com solicitações adicionais custando US$ 7 por 1000. Para projetos maiores de scraping, isso pode se tornar proibitivamente caro. Web scraping oferece uma alternativa flexível e de baixo custo para acessar dados do Google Maps em grande escala.

A coleta de dados públicos on-line na Web é geralmente considerada legal pela legislação dos EUA, como a Lei de Fraude e Abuso de Computadores. No entanto, certifique-se de cumprir os Termos de Serviço do Google, que proíbem scraping excessivo, perturbador ou que contorne seus sistemas. A raspagem muito agressiva pode bloquear seu endereço IP.

Colete apenas dados relevantes às suas necessidades e não republice conteúdo copiado literalmente. O Google Maps contém informações pessoais, como e-mails e números de telefone, que devem ser anonimizados ou pseudonimizados antes do armazenamento e análise.

Aderir aos princípios éticos ajuda a garantir que seu web scraping agregue valor à sociedade. O Código de Ética da ACM é um excelente guia para práticas de computação responsável.

O valor dos dados do Google Maps

Aqui estão algumas estatísticas importantes que mostram as grandes quantidades de dados disponíveis no Google Maps:

  • Mais de 200 milhões de empresas listadas no Google Maps globalmente em 2021
  • Mais de 1 bilhão de usuários ativos mensais do Google Maps em todo o mundo
  • Milhões de avaliações, imagens, horários de funcionamento e outros dados sobre empresas
  • Métricas de popularidade ao vivo para mais de 10 milhões de lugares em todo o mundo
  • Arquivos históricos de imagens do Street View com mais de 15 anos

Desbloquear esses dados em escala pode fornecer uma inteligência competitiva poderosa para decisões baseadas em dados.

Superando desafios de raspagem

O Google emprega sistemas avançados de detecção de bots para evitar o abuso de seus serviços. Aqui estão algumas técnicas para evitar ficar bloqueado durante a raspagem:

  • Automação do navegador Selenium – Imita ações reais do usuário, como rolar e clicar, automatizando um navegador real como o Chrome. Mais resistente à detecção de bots do que a solicitações.
  • Proxies – Alterne diferentes endereços IP para distribuir solicitações e mascarar atividades de scraping. Serviços de proxy como BrightData oferecem milhares de IPs.
  • Resolução de Captcha – O Google usa o reCAPTCHA v2 no Maps, que requer a resolução manual de desafios visuais. Ferramentas como o Anti-Captcha podem ajudar a automatizar isso.
  • Dados limpos – Os dados extraídos contêm inconsistências e duplicatas que precisam ser limpas antes da análise. Tempo de orçamento para disputa de dados.

Com as ferramentas e técnicas certas, esses desafios podem ser superados para acessar os dados do Google Maps em grande escala.

Raspando o Google Maps com Selenium

Aqui está um guia passo a passo para raspar o Google Maps usando Selenium e Python:

Instale os pacotes necessários

pip install selenium pandas numpy regex pymongo

Driver de configuração

from selenium import webdriver

driver = webdriver.Chrome()

Configure proxies e opções conforme necessário.

Pesquisar lugares

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

extrair dados

Use seletores de elemento para extrair campos-chave:

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]

Clique em cada lugar para obter dados adicionais, como comentários:

for url in place_urls:
    driver.get(url)

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

Girar proxies continuamente

Para aumentar a escala, os proxies devem ser alternados para evitar a detecção:

from brightdata.brightdata_service import BrightDataService

resolver = BrightDataService.create_proxy_resolver() 

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

Isso permite raspar milhares de locais de maneira confiável.

O Google fornece dados de popularidade em tempo real para lugares por meio de um endpoint de API. Um exemplo de resposta:

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

O campo de porcentagem contém a métrica de ocupação ativa que varia de 0 a 100. Veja como extraí-lo em 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"]]

A visualização desses dados pode revelar padrões semanais.

Raspar imagens

As páginas do local contêm galerias de imagens que podem ser copiadas:

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

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

Dados de localização como latitude e longitude são codificados nos URLs.

Armazenando dados em escala

Para scrapers grandes, o MongoDB é uma ótima opção de armazenamento em comparação com CSVs ou planilhas Excel. Algumas práticas recomendadas:

  • Use o esquema de documento NoSQL para permitir flexibilidade conforme os campos mudam
  • Crie índices nos campos que você consulta, como nomes de empresas ou locais
  • Codifique geodados como pontos em vez de endereços para pesquisa geoespacial
  • Agende backups regulares à medida que a raspagem acumula dados ao longo do tempo

Aqui está um exemplo de código de inserção:

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)

Análise e Visualização

Depois que os dados são coletados, o valor real vem da análise e visualização. aqui estão alguns exemplos:

Tipo de AnáliseDescriçãobibliotecas
Análise de SentimentosIdentifique temas positivos e negativos nas avaliaçõesNLTK, TextBlob
Modelagem de TópicoDescubra tópicos de tendência em avaliações usando LDAGensim, pyLDAvis
Reconhecimento de ImagemExtraia texto de menus e outras imagens com OCROpenCV, Pytesseract
Análise GeoespacialVisualize dados em camadas em mapas para análiseFólio, Plotly Express

A análise avançada fornece inteligência competitiva para orientar as decisões de negócios.

Casos de uso

Os dados extraídos do Google Maps permitem serviços poderosos baseados em localização:

  • Pesquisa de mercado – Compare a popularidade e o sentimento dos concorrentes entre locais
  • Geração de Leads – Crie listas de e-mail e telefone direcionadas para divulgação
  • Seleção de Site – Otimize novos locais com base em dados demográficos e tráfego de pedestres
  • Publicidade – Crie campanhas publicitárias hiperlocais com base nos movimentos dos clientes
  • Previsão de demanda – Preveja o tráfego da loja para otimizar a equipe nos finais de semana
  • Logística – Trace rotas ideais para entregas com base em dados de tráfego em tempo real

Estes são apenas alguns exemplos de como os dados do Google Maps coletados na web podem impulsionar a inovação e o crescimento.

Conclusão

Embora o Google Maps forneça uma API gratuita limitada, o web scraping oferece acesso completo aos dados do mapa em grande escala. Com uso responsável, essas técnicas permitem que indivíduos e organizações aproveitem o poder dos dados baseados em localização para obter vantagem competitiva.

As informações do mundo mapeadas – estão lá fora. Agora vá pegá-lo!

Junte-se à conversa

O seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados com *