🥳Junte-se à Comunidade Scrapeless e reivindique sua avaliação gratuita para acessar nossa poderosa ferramenta de raspagem da web!
De volta ao blog

Como raspar o Google Maps usando Python?

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

13-Feb-2025

Raspagem do Google Maps é o processo de extração de informações como nomes de empresas, locais e avaliações do Google Maps usando ferramentas ou scripts automatizados.

Neste post do blog, discutiremos os benefícios da raspagem do Google Maps e mostraremos como fazer isso usando Python e ferramentas automatizadas.

Quais são os benefícios da raspagem do Google Maps?

A raspagem do Google Maps fornece informações comerciais valiosas e insights baseados em localização. Aqui estão os principais benefícios:

Extrair informações comerciais – Reúna detalhes essenciais, como nome da empresa, endereço, número de telefone, site, avaliações, comentários e horários de funcionamento. Esses dados são úteis para geração de leads, listagens de diretórios e alcance do cliente.

Realizar análise de mercado e pesquisa de concorrentes – Analise as tendências de mercado, identifique os principais concorrentes e avalie a densidade de negócios em locais específicos. Isso ajuda as empresas a tomar decisões informadas sobre expansão, estratégias de preços e engajamento do cliente.

Melhorar a visualização e otimização de dados geográficos – Melhore a cobertura de serviço, otimize as rotas de entrega e planeje a localização das lojas com base nas distribuições de negócios do mundo real. As empresas podem usar esses dados para melhorar a eficiência operacional e a acessibilidade do cliente.

Desafios da raspagem do Google Maps

A raspagem do Google Maps apresenta desafios significativos devido aos seus rigorosos mecanismos anti-raspagem. O Google impõe limites de taxa, CAPTCHAs e restrições de API para evitar a extração automatizada de dados, tornando a raspagem em larga escala difícil sem encontrar bloqueios.

Outro desafio é a natureza dinâmica do Google Maps, que usa JavaScript para carregar informações comerciais. Os métodos tradicionais de raspagem que dependem da análise de HTML estático são ineficazes, exigindo o uso de navegadores sem cabeça ou estruturas de automação para interagir com a página e extrair dados.

Para contornar essas restrições, os raspadores devem implementar técnicas como rotação de proxy e falsificação de User-Agent. Esses métodos ajudam a distribuir solicitações em vários IPs e simular o comportamento do usuário real, reduzindo a probabilidade de detecção e garantindo um processo de raspagem mais estável.

2 Métodos Especiais para Raspar o Google Maps

1. API de Raspagem do Google Maps

O Google fornece uma API de Raspagem?
Sim.

Muitos sites populares, como Twitter e Amazon, oferecem suas próprias APIs, e o Google não é exceção. Quando a API do Google Maps foi lançada, ela rapidamente ganhou ampla atenção e adoção. No entanto, antes de usar a API oficial, pergunte a si mesmo: você realmente precisa usar a API do Google Maps?

Por que o uso da API oficial do Google Maps não atende às suas necessidades?

Vamos começar com os preços. Cada usuário recebe uma cota gratuita mensal de US$ 200 para a API do Google Maps, que inclui:

  • Até 40.000 solicitações de geocodificação
  • Até 100.000 carregamentos de mapas estáticos
  • Até 28.000 carregamentos de mapas dinâmicos
  • Até 40.000 solicitações de planejamento de rotas

À primeira vista, essa cota parece suficiente, mas na prática, pode não ser o suficiente. Como muitas outras APIs, a API do Google Maps cobra por solicitação assim que a cota gratuita é excedida, e seu preço é relativamente alto. Considere este cenário: ao usar a API Incorporada, um único carregamento de mapa pode disparar várias chamadas de API, como pesquisas de endereço, planejamento de rotas ou cálculos de distância, consumindo rapidamente sua cota. À medida que seu negócio escala, as chamadas da API aumentam e a API do Google Maps pode se tornar uma despesa cara.

Além dos preços, a API do Google Maps também tem limitações rigorosas de solicitações. Atualmente, o Google impõe um limite de taxa de 100 solicitações por segundo, o que significa que, em cenários de alta concorrência, o acesso pode ser restrito, afetando a eficiência de recuperação de dados.

Posso ainda usar uma API para raspar o Google Maps?

Absolutamente! Você só precisa de um serviço de API que seja acessível, estável e seguro. No entanto, encontrar um que atenda a todos esses critérios é incrivelmente desafiador! Felizmente, Scrapeless Google Maps API se destaca entre muitos produtos de API:

🔴 Economia de custos: Cada chamada de API custa apenas US$ 0,80, e com uma assinatura de US$ 49, você recebe um desconto de 10%!

🔴 Dados precisos: Nossos desenvolvedores analisam constantemente os algoritmos e restrições de raspagem do Google para garantir que a API seja atualizada e otimizada.

🔴 Taxa de sucesso estável e alta: Scrapeless garante uma taxa de sucesso e confiabilidade de 99%. A estabilidade e a precisão da raspagem do Google Trends atingiram quase 100%! Atualmente, o tempo médio de resposta é de cerca de 3 segundos, significativamente mais rápido do que a maioria dos provedores de API. Além disso, os dados são retornados em um formato JSON padronizado, tornando-os prontos para uso imediato.

Scrapeless já conquistou a confiança de mais de 2.000 usuários corporativos! Junte-se ao Discord agora para reivindicar sua versão de teste gratuita! Apenas 1.000 vagas estão disponíveis por tempo limitado — aja rápido!

Leitura adicional:

2. Web Scraping

Web Scraper é um dos métodos mais comuns para raspagem de sites. Você pode construir sua própria ferramenta de raspagem do Google Maps para extrair dados específicos. Neste artigo, usaremos o Python Google Maps Scraper para raspar locais e rotas específicas do mapa.

Continue rolando!

Método 1. Raspagem com a API do Google Maps

Passo 1. Obtenha sua chave de API

Para começar, você precisará obter sua chave de API no painel Scrapeless:

  • Faça login no Painel Scrapeless.
  • Navegue até Gerenciamento de chaves de API.
  • Clique em Criar para gerar sua chave de API exclusiva.
  • Depois de criada, basta clicar na chave de API para copiá-la.
Obtenha sua chave de API

Passo 2: Insira sua chave de API

Agora você pode usar sua chave de API para integrar o Scrapeless ao seu projeto. Siga estas etapas para testar e implementar a API:

  • Visite a Documentação da API.
  • Clique em "Experimente" para o endpoint desejado.
  • Insira sua chave de API no campo "Autenticação".
  • Clique em "Enviar" para obter a resposta de raspagem.
Use sua chave de API no código

Abaixo está um exemplo de snippet de código que você pode integrar diretamente ao seu Google Maps Scraper.

Python

Python Copy
import http.client
import json

conn = http.client.HTTPSConnection("api.scrapeless.com")
payload = json.dumps({
   "actor": "scraper.google.maps",
   "input": {
      "engine": "google_maps",
      "q": "coffee",
      "type": "search",
      "ll": "@40.7455096,-74.0083012,14z",
      "hl": "en",
      "gl": "us"
   }
})
headers = {
   'Content-Type': 'application/json'
}
conn.request("POST", "/api/v1/scraper/request", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

JavaScript

JavaScript Copy
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
   "actor": "scraper.google.maps",
   "input": {
      "engine": "google_maps",
      "q": "coffee",
      "type": "search",
      "ll": "@40.7455096,-74.0083012,14z",
      "hl": "en",
      "gl": "us"
   }
});

var requestOptions = {
   method: 'POST',
   headers: myHeaders,
   body: raw,
   redirect: 'follow'
};

fetch("https://api.scrapeless.com/api/v1/scraper/request", requestOptions)
   .then(response => response.text())
   .then(result => console.log(result))
   .catch(error => console.log('error', error));

Método 2. Crie seu primeiro Google Maps Scraper com Python

Configuração do ambiente

Primeiro, precisamos configurar um ambiente de raspagem da web, preparando as seguintes ferramentas:

  1. Python: Faça o download no site oficial do Python. É recomendável instalar uma versão uma ou duas versões atrás da mais recente, em vez da versão mais nova.
Python
  1. IDE Python: Qualquer IDE compatível com Python funcionará, mas recomendamos o PyCharm, uma ferramenta de desenvolvimento Python especializada. A edição gratuita do PyCharm Community é suficiente.
IDE Python

Observação para usuários do Windows:
Durante a instalação, certifique-se de que a opção "Adicionar python.exe ao PATH" esteja selecionada. Isso permite que você use comandos Python no terminal. Como o Python 3.4 e posterior incluem isso por padrão, nenhuma configuração manual é necessária.

Adicionar python.exe ao PATH

Para verificar se o Python está instalado, abra o terminal ou prompt de comando e execute:

Bash Copy
python --version
  1. Um ambiente virtual: A criação de um ambiente virtual é recomendada para gerenciar dependências e evitar conflitos com outros projetos Python. Navegue até o diretório do seu projeto no terminal e execute o seguinte comando para criar um ambiente virtual chamado "google_flights_env":
Bash Copy
python -m venv google_flights_env

Ative o ambiente virtual usando o comando apropriado para seu sistema operacional:

  • Windows:
Bash Copy
google_flights_env\Scripts\activate
  • macOS/Linux:
Bash Copy
source google_flights_env/bin/activate
  1. Instalando bibliotecas necessárias: Após ativar o ambiente virtual, instale as bibliotecas Python necessárias para raspagem da web: requests e BeautifulSoup4. Instale-as seguindo nosso comando:
Bash Copy
pip install requests
pip install beautifulsoup4
  1. Instalando ferramentas de automação: Como o Google Maps não retorna uma página HTML direta para análise, são necessárias ferramentas de automação para recuperar o HTML bruto.
  • Instale o Selenium, um pacote de automação Python:
Bash Copy
pip install selenium
  • Você também precisa baixar o driver do navegador. Tomando o Google Chrome mais usado como exemplo, encontre o ChromeDriver que corresponda à versão do navegador no site oficial, faça o download e instale-o localmente e, em seguida, coloque-o no diretório do código no PyCharm.
ChromeDriver

Raspagem de locais

Passo 1: Abra o Google Maps e pesquise por "café".

Raspagem de locais

Passo 2. Raspe campos específicos dos resultados da pesquisa do Google Maps.

Podemos usar o BeautifulSoup para analisar o HTML e localizar os elementos que contêm as informações desejadas. Aqui estão alguns exemplos:

  • Raspe o nome da cafeteria:
Raspe o nome da cafeteria

Extraia o elemento e use Python para raspar os dados de texto:

Python Copy
def scrape_title(listing):
    maps_element = listing.select_one('div.NrDZNb div.qBF1Pd.fonHeadlineSmall')
    return maps_element.text.strip()
  • Raspe as avaliações:
Raspe as avaliações

Extraia o elemento e use Python para raspar os dados de texto. Como a avaliação pode estar vazia, adicionamos uma verificação nula:

Python Copy
def scrape_rating(listing):
    maps_element = listing.select_one('span.MW4etd[aria-hidden="true"]')
    if maps_element is None:
        return None
    else:
        return maps_element.text.strip()
  • Raspe o link da imagem:
Raspe o link da imagem

Extraia o atributo href do elemento e use Python para raspar o link da imagem:

Python Copy
def scrape_image_links(listing):
    maps_image_link = listing.select_one('div.SpFAAb').select_one("img")
    return maps_image_link['src']

O acima é apenas uma demonstração parcial. Você pode consultar nosso código final abaixo:

Python Copy
# Import necessary libraries
import time

from bs4 import BeautifulSoup
import json
from selenium import webdriver

driver = webdriver.Chrome()

# Function to scrape listing elements from Google Maps
def scrape_listings(soup):
    return soup.select('div.Nv2PK.THOPZb.CpccDe')

# Function to scrape title from google_maps
def scrape_title(listing):
    maps_element = listing.select_one('div.NrDZNb').select_one('div.qBF1Pd.fontHeadlineSmall')
    return maps_element.text.strip()

# Function to scrape ratings from google_maps
def scrape_rating(listing):
    maps_element = listing.select_one('span.MW4etd[aria-hidden="true"]')
    if maps_element is None:
        return None
    else:
        return maps_element.text.strip()

def scrape_image_links(listing):
    maps_image_link = listing.select_one('div.SpFAAb').select_one("img")
    return maps_image_link['src']

# Main function
def main():
    # Make a request to Google Maps URL and parse HTML
    url = 'https://www.google.com/maps/search/coffee/@47.4641284,-122.3855982,11z?entry=ttu&g_ep=EgoyMDI1MDIwOS4wIKXMDSoASAFQAw=='
    driver.get(url)
    time.sleep(2)
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')

    # Scrape map listings
    listings = scrape_listings(soup)

    # Iterate through each listing and extract map information
    maps_data = []
    for listing in listings:
        title = scrape_title(listing)
        rating = scrape_rating(listing)
        image_link = scrape_image_links(listing)

        # Store map information in a dictionary
        maps_info = {
            'title': title,
            'rating': rating,
            'image_link': image_link
        }

        maps_data.append(maps_info)

    # Save results to a JSON file
    with open('google_maps_data.json', 'w') as json_file:
        json.dump(maps_data, json_file, indent=4)

if __name__ == "__main__":
    main()

Passo 3. Raspe os resultados e armazene os dados.

Um arquivo JSON chamado google_maps_data.json será gerado em seu diretório PyCharm, contendo os dados raspados. Abaixo está um exemplo dos resultados raspados:

JSON Copy
[
    {
        "title": "Lucky Mugs",
        "rating": null,
        "image_link": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=36eAZcAEe5VpSUaFnPcOVA&cb_client=search.gws-prod.gps&w=80&h=92&yaw=139.65103&pitch=0&thumbfov=100"
    },
    {
        "title": "Retro Coffee",
        "rating": "4.4",
        "image_link": "https://lh5.googleusercontent.com/p/AF1QipPxJNNq_ddJeY4metdP0-Yv1gfAb8hwqtdjEk3R=w80-h106-k-no"
    },
    {
        "title": "Caffe Migliore.",
        "rating": "4.4",
        "image_link": "https://lh5.googleusercontent.com/p/AF1QipN5LhTxOs7TEicnyDcaeIwp5iOVD46aQ-vMpco=w80-h106-k-no"
    },
    {
        "title": "Local Coffee Spot",
        "rating": "4.2",
        "image_link": "https://lh5.googleusercontent.com/p/AF1QipO9UVq4zJ3G-xw62mFyQEj8jTdlehq7eLlZ4RyL=w163-h92-k-no"
    },
    {
        "title": "BigFoot Java",
        "rating": "4.1",
        "image_link": "https://lh3.googleusercontent.com/gps-proxy/ALd4DhGHbsVNZu27z_GxIxq3jTyZbJI5MUY_rpPTL7yZQX0Mbx4BEbKTwMTz6vJ16y1u1qVA97qxlMtjejRYMjEk7Riqx2dLl1CeDEcGfIWKWmIF5E3qcna_9faDEBRwLvhoiBcJywVx_TZ7jtM1tKUmynpAZdn-vvYju1pEGKDA34jUT38S8qip3Drk=w92-h92-k-no"
    },
    {
        "title": "Caffe Ladro - Downtown on Pine Street",
        "rating": "4.3",
        "image_link": "https://lh5.googleusercontent.com/p/AF1QipO84r3OrCAb6IjtMYbki4pAMpuWf8KoK5_ods89=w92-h92-k-no"
    },
    {
        "title": "Coffee Tree",
        "rating": "4.4",
        "image_link": "https://lh5.googleusercontent.com/p/AF1QipPYbEDGEskTGDCcpBHxF-nQqrFhR2yFi5cBt6Lu=w122-h92-k-no"
    }
]

Passo 1. Insira a origem e o destino no Google Maps.

Raspagem de rotas de navegação

Passo 2. Raspe campos específicos dos resultados da pesquisa de rota de navegação do Google Maps.

Continue usando o BeautifulSoup para analisar o HTML e localizar os elementos que contêm as informações desejadas:

  • Raspe o campo "via":
Raspe o campo "via"

Extraia o elemento e use Python para raspar os dados de texto:

Python Copy
def scrape_via(listing):
    maps_element = listing.select_one('h1.VuCHmb.fontHeadlineSmall')
    return maps_element.text.strip()
  • Raspe o tempo:
Raspe o tempo

Extraia o elemento e use Python para raspar os dados de texto:

Python Copy
def scrape_time(listing):
    maps_element = listing.select_one('div.Fk3sm.fontHeadlineSmall.delay-light')
    return maps_element.text.strip()
  • Raspe a distância:
Raspe a distância
Python Copy
def scrape_distance(listing):
    maps_element = listing.select_one('div.ivN21e.tUEI83.fontBodyMedium').select_one('div')
    return maps_element.text.strip()
  • Aqui está o código final:
Python Copy
# Import necessary libraries
import time

from bs4 import BeautifulSoup
import json
from selenium import webdriver

driver = webdriver.Chrome()

# Function to scrape listing elements from Google Maps
def scrape_listings(soup):
    return soup.select('div.UgZKXd')

# Function to scrape via from google_maps
def scrape_via(listing):
    maps_element = listing.select_one('h1.VuCHmb.fontHeadlineSmall')
    return maps_element.text.strip()

# Function to scrape time from google_maps
def scrape_time(listing):
    maps_element = listing.select_one('div.Fk3sm.fontHeadlineSmall.delay-light')
    return maps_element.text.strip()

# Function to scrape distance from google_maps
def scrape_distance(listing):
    maps_element = listing.select_one('div.ivN21e.tUEI8e.fontBodyMedium').select_one('div')
    return maps_element.text.strip()

# Main function
def main():
    # Make a request to google maps URL and parse HTML
    url = 'https://www.google.com/maps/dir/Austin-Bergstrom+International+Airport/5540+N+Lamar+Blvd,+Austin,+TX+78756/@30.2603068,-97.7871692,12z/data=!3m1!4b1!4m13!4m12!1m5!1m1!1s0x8644b13b8b4aff45:0x1ca7fca8c9dc2768!2m2!1d-97.6710889!2d30.194085!1m5!1m1!1s0x8644cba140fad1fb:0x2db903443245739c!2m2!1d-97.7286733!2d30.3247493?hl=en&entry=ttu&g_ep=EgoyMDI1MDIwOS4wIKXMDSoASAFQAw%3D%3D'
    driver.get(url)
    time.sleep(2)
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')

    # Scrape maps listings
    listings = scrape_listings(soup)

    # Iterate through each listing and extract maps information
    maps_data = []
    for listing in listings:
        via = scrape_via(listing)
        time_consuming = scrape_time(listing)
        distance = scrape_distance(listing)

        # Store maps information in a dictionary
        maps_info = {
            'via': via,
            'time': time_consuming,
            'distance': distance
        }

        maps_data.append(maps_info)

    # Save results to a JSON file
    with open('google_maps_dir_data.json', 'w') as json_file:
        json.dump(maps_data, json_file, indent=4)

if __name__ == "__main__":
    main()

Passo 3. Raspe os resultados e armazene os dados.

Um arquivo JSON chamado google_maps_dir_data.json será gerado em seu diretório PyCharm, contendo os dados raspados. Abaixo está um exemplo dos resultados raspados:

JSON Copy
[
    {
        "via": "via 183 Toll",
        "time": "17 min",
        "distance": "13.4 miles"
    },
    {
        "via": "via State Hwy 71 W and I-35 N",
        "time": "19 min",
        "distance": "15.5 miles"
    },
    {
        "via": "via S Hwy 183 and 183 Toll",
        "time": "17 min",
        "distance": "13.6 miles"
    }
]

Considerações Finais

Agora você tem as habilidades para raspar o Google Maps como um profissional! Dois métodos neste blog podem definitivamente economizar seu tempo e resgatar sua carteira! Não tem tanto tempo? Confuso com o processo de codificação complicado? Use sua chave de API para chamar nossa API do Google Maps gratuitamente para concluir facilmente a raspagem de dados!

Você é um entusiasta de API ou um raspador da web hardcore? Compartilhe sua experiência em nossa comunidade!

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo