Ir al contenido

Cómo utilizar la API de Google Maps en Python: una guía rápida

La API de Google Maps abre un mundo de potentes capacidades geoespaciales a través de una sencilla interfaz RESTful. Con sólo unas pocas líneas de código, puedes geocodificar direcciones, calcular distancias, mostrar mapas personalizados y mucho más.

En esta guía completa, aprenderá cómo comenzar con la API de Google Maps usando Python. Cubriremos:

  • Obtener una clave API
  • Geocodificar direcciones y obtener coordenadas
  • Calcular distancias y tiempos de viaje.
  • Superar los límites de API con web scraping
  • Eliminación de datos de Google Maps con Python

¡Y mucho más! Vamos a sumergirnos.

Introducción a la API de Google Maps

La API de Google Maps es un servicio web que proporciona acceso a la potente plataforma de mapas de Google a través de una interfaz JSON/XML. Le permite incrustar Google Maps en páginas web, personalizar estilos de mapas, marcadores, polígonos y superposiciones.

Pero la API también permite algunas capacidades geoespaciales increíblemente útiles como:

  • Geocodificación – Conversión de direcciones de calles a coordenadas geográficas.
  • Geocodificación inversa – Conversión de coordenadas geográficas a la dirección más cercana.
  • Matriz de distancia – Calcular la distancia de viaje y el tiempo entre lugares.
  • DirecciónInstrucciones – Obtener direcciones y rutas punto a punto
  • Lugares – Buscar y obtener detalles de lugares y empresas locales.
  • Mapas estáticos – Generación de imágenes de mapas estáticos.

Con más de 15 API y más de 100 capacidades, el alcance es increíble. Y el precio de la API de Google Maps es muy asequible: muchas funciones son gratuitas hasta los límites de uso.

Ahí es donde la integración de Python resulta útil. Puede acceder a todas estas API a través de un código Python simple, automatizar flujos de trabajo y crear potentes aplicaciones geoespaciales.

Comencemos por configurarlo.

Obtener una clave API de Google Maps

Para utilizar cualquier API de Google Maps, primero necesita obtener una clave API que identifique su proyecto. Así es cómo:

  1. Visite la Consola de Google Cloud e inicie sesión con su cuenta de Google.

  2. Haga clic en el menú de navegación y seleccione API y servicios > Credenciales.

  3. En la página Credenciales, haga clic en Crear credenciales y luego seleccione Clave API.

  4. Copie esta nueva clave API y guárdela en un lugar seguro. ¡Lo usaremos pronto!

Con la clave, puede comenzar a habilitar las API que desee utilizar. Para esta guía, nos centraremos en dos esenciales:

  • API de geocodificación
  • API de matriz de distancia

En la página Credenciales, haga clic en Habilitar API y servicios en la parte superior. Busque esas API y habilítelas para su proyecto.

Ahora estamos listos para comenzar a usar las API en Python.

Geocodificar direcciones en Python

Una de las aplicaciones más útiles de la API de Google Maps es convertir direcciones de calles en coordenadas geográficas (latitud y longitud). Este proceso se llama geocodificación.

La API de codificación geográfica le permite pasar cualquier dirección y recuperar sus coordenadas de ubicación. Aquí hay una función de Python para hacer precisamente eso:

import requests

def geocode_address(api_key, address):

  url = ‘https://maps.googleapis.com/maps/api/geocode/json‘

  params = {
    ‘address‘: address,
    ‘key‘: api_key
  }

  response = requests.get(url, params=params)

  if response.status_code == 200:
    data = response.json()

    if data[‘status‘] == ‘OK‘:
      location = data[‘results‘][0][‘geometry‘][‘location‘]
      lat = location[‘lat‘]
      lng = location[‘lng‘]
      return lat, lng

    else:
      print(f"Error: {data[‘error_message‘]}")
      return None, None

  else:
    print(‘Request failed.‘)
    return None, None

Esto realiza una solicitud a la API de Geocodificación y pasa la dirección como parámetro. Si tiene éxito, extrae las coordenadas de latitud y longitud de la respuesta.

Probémoslo:

api_key = ‘YOUR_API_KEY‘ 

address = ‘1600 Amphitheatre Parkway Mountain View, CA 94043‘

lat, lng = geocode_address(api_key, address)

print(lat, lng)

Esto debería imprimir las coordenadas 37.4224764, -122.0842499.

¡Ahora tenemos una forma sencilla de convertir direcciones en coordenadas geográficas en Python utilizando la API de codificación geográfica de Google Maps!

Algunos casos de uso de geocodificación:

  • Trazar ubicaciones en un mapa a partir de una lista de direcciones
  • Analizar la distribución geográfica de los clientes.
  • Etiquetar registros de bases de datos con lat/lng para búsquedas de proximidad

Pero ¿qué pasa si queremos ir al revés: convertir coordenadas geográficas en direcciones?

Geocodificación inversa en Python

La geocodificación inversa le permite obtener la dirección más cercana a una coordenada de latitud/longitud determinada.

La API de codificación geográfica maneja esto con el latlng parámetro en lugar de address:

import requests

def reverse_geocode(api_key, lat, lng):

  url = ‘https://maps.googleapis.com/maps/api/geocode/json‘

  params = {
    ‘latlng‘: f‘{lat},{lng}‘,
    ‘key‘: api_key  
  }

  response = requests.get(url, params=params)

  if response.status_code == 200:
    data = response.json()

    if data[‘status‘] == ‘OK‘:
      return data[‘results‘][0][‘formatted_address‘]

    else:
      print(f"Error: {data[‘error_message‘]}")
      return None

  else:
    print(‘Request failed.‘)  
    return None

Probémoslo:

lat = 37.4224764
lng = -122.0842499

address = reverse_geocode(api_key, lat, lng)

print(address) 

Esto imprime "1600 Amphitheatre Pkwy, Mountain View, CA 94043, EE. UU.".

La geocodificación inversa es útil para trazar direcciones en un mapa a partir de datos de latitud/longitud.

A continuación, veamos cómo calcular distancias entre lugares con la API de Google Maps.

Calcular la distancia y el tiempo de viaje en Python

La API Distance Matrix proporciona la distancia y el tiempo de viaje para una matriz de orígenes y destinos.

Puede pasar un conjunto de orígenes y destinos, y devolverá la distancia y la duración entre cada par origen-destino.

Aquí hay una solicitud de muestra:

import requests 

origins = ‘Vancouver+BC|Seattle‘
destinations = ‘San+Francisco|Victoria+BC‘

url = ‘https://maps.googleapis.com/maps/api/distancematrix/json‘

params = {
  ‘origins‘: origins,
  ‘destinations‘: destinations,
  ‘key‘: api_key
}

response = requests.get(url, params=params)
data = response.json()

Esto calcula la distancia y el tiempo desde Vancouver y Seattle hasta San Francisco y Victoria.

El rows contener los resultados para cada punto de origen, y elements Tiene los resultados para cada destino.

Algunos usos de la API Distance Matrix:

  • Calcular el radio de tiempo de viaje para la ubicación de una tienda
  • Estimar los tiempos de entrega del pedido.
  • Optimice rutas para una flota de conductores

Esto demuestra sólo una fracción de lo que puedes hacer con la API de Google Maps. Veamos a continuación cómo superar algunas limitaciones.

Superar los límites de la API de Google Maps con Web Scraping

La API de Google Maps ofrece un valor excelente con generosos límites gratuitos. Pero siguen siendo límites de tarifa y uso.

Una vez que los supera, sus solicitudes comienzan a estrangularse o bloquearse. Para aplicaciones con mucho tráfico, es posible que deba comprar planes premium.

Una alternativa es extraer datos de Google Maps directamente desde navegadores que utilizan bibliotecas de Python como Selenium, Beautiful Soup, etc.

Esto evita completamente los límites de API, ya que está extrayendo datos del front-end en lugar de utilizar las API de back-end.

La extracción de Google Maps le brinda flexibilidad para extraer cualquier dato que desee:

  • Nombres de lugares, fotos, reseñas, atributos, etc.
  • Direcciones y rutas
  • Estimaciones de tráfico y horarios populares.
  • Imágenes de Street View

Echemos un vistazo rápido a cómo extraer algunos datos de Google Maps con Python.

Raspado de Google Maps con Python y BeautifulSoup

Para demostrar el web scraping de Google Maps, extraeremos algunos nombres de restaurantes y reseñas.

Primero buscaremos "restaurantes en Vancouver" en Google Maps. Luego, elimine el nombre del lugar, la calificación y las reseñas de muestra en la primera página.

Nuestro guión:

  1. Utilice Selenium para cargar la página.
  2. Cambie a BeautifulSoup para analizar el HTML
  3. Encuentra los elementos del lugar usando selectores CSS
  4. Extrae el nombre, la calificación y las reseñas.

Aquí está el código completo:

from selenium import webdriver
from bs4 import BeautifulSoup
import time

driver = webdriver.Chrome()

url = ‘https://www.google.com/maps/search/restaurants+in+vancouver‘
driver.get(url)
time.sleep(3)

soup = BeautifulSoup(driver.page_source, ‘html.parser‘)

places = soup.select(‘div.section-result-content‘)

data = []
for place in places:

  name = place.select_one(‘h3.section-result-title‘).text

  rating = place.select_one(‘span.section-result-rating‘).text

  reviews = [review.text for review in place.select(‘span.section-review-text‘)]

  data.append({
    ‘name‘: name,
    ‘rating‘: rating, 
    ‘sample_reviews‘: reviews[:2]
  })

driver.quit()

print(data)

Esto extraerá datos como:

[
  {
    ‘name‘: ‘The Flying Pig‘,
    ‘rating‘: ‘4.6‘,
    ‘sample_reviews‘: [‘Amazing food!‘, ‘Staff are so friendly.‘]
  },
  {  
    ‘name‘: ‘The Eatery‘,
    ‘rating‘: ‘4.5‘,
    ‘sample_reviews‘: [‘Delicious!‘, ‘Great prices.‘]
  }
]

La ventaja clave: ¡sin límites de API! Puede extraer cualquier dato a escala.

Algunos consejos para un web scraping responsable:

  • Agregue retrasos aleatorios para evitar sobrecargar los servidores
  • Identificarse como un navegador normal, no como un bot
  • Respeta las reglas de robots.txt
  • Utilice la rotación de proxy para evitar bloqueos de IP

¡Consulta nuestra guía detallada para obtener muchos más consejos de extracción de datos de Google Maps!

Puntos clave

La API de Google Maps permite potentes capacidades geoespaciales a través de una interfaz sencilla:

  • Direcciones geográficas y coordenadas geográficas inversas
  • Calcular distancias y tiempos de viaje.
  • Busca y detalla lugares, direcciones y más

Se integra fácilmente con Python mediante el módulo de solicitudes. Pero los límites de uso pueden plantear desafíos para cargas de trabajo más grandes.

El web scraping proporciona una alternativa escalable para extraer datos geoespaciales de Google Maps sin límites.

Las bibliotecas de Python como Selenium y BeautifulSoup facilitan la búsqueda de lugares, reseñas, direcciones, estadísticas de tráfico, Street View y más.

Con suerte, esto le brindará una base sólida para desbloquear todo el potencial de los datos de Google Maps utilizando la API o el scraping: ¡las posibilidades son infinitas!

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *