Zum Inhalt

So verwenden Sie die Google Maps-API in Python: Eine Kurzanleitung

Die Google Maps API eröffnet über eine einfache RESTful-Schnittstelle eine Welt leistungsstarker Geodatenfunktionen. Mit nur wenigen Codezeilen können Sie Adressen geokodieren, Entfernungen berechnen, benutzerdefinierte Karten anzeigen und vieles mehr.

In dieser umfassenden Anleitung erfahren Sie, wie Sie mit Python mit der Google Maps API beginnen. Wir behandeln:

  • Einen API-Schlüssel erhalten
  • Geokodierung von Adressen und Abrufen von Koordinaten
  • Entfernungen und Fahrzeiten berechnen
  • Überwindung von API-Grenzwerten mit Web Scraping
  • Scraping von Google Maps-Daten mit Python

Und noch viel mehr! Lass uns eintauchen.

Einführung in die Google Maps API

Die Google Maps API ist ein Webdienst, der über eine JSON/XML-Schnittstelle Zugriff auf die leistungsstarke Kartenplattform von Google bietet. Damit können Sie Google Maps in Webseiten einbetten und Kartenstile, Markierungen, Polygone und Overlays anpassen.

Die API ermöglicht aber auch einige unglaublich nützliche Geodatenfunktionen wie:

  • Geokodierung – Konvertieren von Straßenadressen in geografische Koordinaten
  • Umgekehrte Geokodierung – Konvertieren von geografischen Koordinaten in die nächstgelegene Adresse
  • Distanzmatrix – Berechnung der Entfernung und Zeit zwischen Orten
  • Anweisungen – Erhalten von Punkt-zu-Punkt-Wegbeschreibungen und Routen
  • Länder/Regionen – Suchen und Abrufen von Informationen zu lokalen Orten und Unternehmen
  • Statische Karten – Generieren statischer Kartenbilder

Mit über 15 APIs und über 100 Funktionen ist der Umfang unglaublich. Und die Preise für die Google Maps API sind äußerst erschwinglich – viele Funktionen sind bis zu den Nutzungsbeschränkungen kostenlos.

Hier bietet sich die Python-Integration an. Sie können über einfachen Python-Code auf alle diese APIs zugreifen, Arbeitsabläufe automatisieren und leistungsstarke Geodatenanwendungen erstellen.

Beginnen wir mit der Einrichtung.

Einen Google Maps-API-Schlüssel erhalten

Um eine Google Maps-API verwenden zu können, benötigen Sie zunächst einen API-Schlüssel, der Ihr Projekt identifiziert. Hier ist wie:

  1. Gehen Sie zum Google Cloud-Konsole und melden Sie sich mit Ihrem Google-Konto an.

  2. Klicken Sie auf das Navigationsmenü und wählen Sie APIs & Dienste > Anmeldeinformationen.

  3. Klicken Sie auf der Seite „Anmeldeinformationen“ auf „Anmeldeinformationen erstellen“ und wählen Sie dann „API-Schlüssel“ aus.

  4. Kopieren Sie diesen neuen API-Schlüssel und speichern Sie ihn an einem sicheren Ort. Wir werden es bald verwenden!

Mit dem Schlüssel können Sie mit der Aktivierung der APIs beginnen, die Sie verwenden möchten. In diesem Leitfaden konzentrieren wir uns auf zwei wesentliche Punkte:

  • Geokodierungs-API
  • Entfernungsmatrix-API

Klicken Sie auf der Seite „Anmeldeinformationen“ oben auf „APIs und Dienste aktivieren“. Suchen Sie nach diesen APIs und aktivieren Sie sie für Ihr Projekt.

Jetzt können wir mit der Verwendung der APIs in Python beginnen.

Geokodierung von Adressen in Python

Eine der nützlichsten Anwendungen der Google Maps API ist die Konvertierung von Straßenadressen in geografische Koordinaten (Breiten- und Längengrad). Dieser Vorgang wird aufgerufen Geokodierung.

Mit der Geokodierungs-API können Sie jede Adresse übergeben und deren Standortkoordinaten zurückerhalten. Hier ist eine Python-Funktion, die genau das tut:

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

Dadurch wird eine Anfrage an die Geocoding-API gestellt und die Adresse als Parameter übergeben. Bei Erfolg werden die Breiten- und Längenkoordinaten aus der Antwort extrahiert.

Lass es uns testen:

api_key = ‘YOUR_API_KEY‘ 

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

lat, lng = geocode_address(api_key, address)

print(lat, lng)

Dadurch sollten die Koordinaten 37.4224764, -122.0842499 gedruckt werden.

Wir haben jetzt eine einfache Möglichkeit, Adressen in Python mithilfe der Google Maps Geocoding API in geografische Koordinaten umzuwandeln!

Einige Anwendungsfälle für die Geokodierung:

  • Zeichnen Sie Standorte auf einer Karte aus einer Liste von Adressen ein
  • Analysieren Sie die geografische Verteilung der Kunden
  • Kennzeichnen Sie Datenbankeinträge mit Lat/Lng für Umgebungssuchen

Was aber, wenn wir den umgekehrten Weg gehen und geografische Koordinaten in Adressen umwandeln möchten?

Umgekehrte Geokodierung in Python

Mit der umgekehrten Geokodierung können Sie die Adresse abrufen, die einer bestimmten Breiten-/Längenkoordinate am nächsten liegt.

Die Geocoding-API erledigt dies mit dem latlng Parameter anstelle von 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

Lass es uns testen:

lat = 37.4224764
lng = -122.0842499

address = reverse_geocode(api_key, lat, lng)

print(address) 

Darauf steht „1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA“.

Die umgekehrte Geokodierung ist nützlich, um Adressen auf einer Karte aus Breiten-/Längengraddaten darzustellen.

Als Nächstes sehen wir uns an, wie Entfernungen zwischen Orten mit der Google Maps-API berechnet werden.

Berechnen von Entfernung und Reisezeit in Python

Die Distance Matrix API stellt Reisedistanz und -zeit für eine Matrix von Herkunfts- und Zielorten bereit.

Sie können eine Reihe von Start- und Zielorten übergeben und erhalten die Entfernung und Dauer zwischen jedem Start-Ziel-Paar zurück.

Hier ist eine Beispielanfrage:

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()

Dadurch werden die Entfernung und die Zeit von Vancouver und Seattle nach San Francisco und Victoria berechnet.

Das rows die Ergebnisse für jeden Ursprungspunkt enthalten und elements hat die Ergebnisse für jedes Ziel.

Einige Verwendungsmöglichkeiten der Distance Matrix API:

  • Berechnen Sie den Fahrzeitradius für einen Filialstandort
  • Schätzen Sie die Lieferzeiten Ihrer Bestellung
  • Optimieren Sie Routen für eine Fahrerflotte

Dies zeigt nur einen Bruchteil dessen, was Sie mit der Google Maps API tun können. Schauen wir uns als Nächstes die Überwindung einiger Einschränkungen an.

Überwindung der API-Einschränkungen von Google Maps mit Web Scraping

Die Google Maps API bietet ein hervorragendes Preis-Leistungs-Verhältnis mit großzügigen kostenlosen Limits. Aber es gibt immer noch Raten- und Nutzungsbeschränkungen.

Sobald Sie diese überschreiten, werden Ihre Anfragen gedrosselt oder blockiert. Für stark frequentierte Apps müssen Sie möglicherweise Premium-Pläne erwerben.

Eine Alternative ist, Scrapen Sie Google Maps-Daten direkt aus Browsern mit Python-Bibliotheken wie Selenium, Beautiful Soup usw.

Dadurch werden API-Einschränkungen vollständig umgangen, da Sie Daten aus dem Front-End extrahieren, anstatt die Back-End-APIs zu verwenden.

Durch das Scraping von Google Maps haben Sie die Flexibilität, alle gewünschten Daten zu extrahieren:

  • Ortsnamen, Fotos, Bewertungen, Attribute usw.
  • Wegbeschreibung und Routen
  • Verkehrsschätzungen und beliebte Zeiten
  • Street View-Bilder

Werfen wir einen kurzen Blick auf das Scrapen einiger Google Maps-Daten mit Python.

Scraping von Google Maps mit Python und BeautifulSoup

Um das Web-Scraping von Google Maps zu demonstrieren, extrahieren wir einige Restaurantnamen und Bewertungen.

Zuerst suchen wir auf Google Maps nach „Restaurants in Vancouver“. Streichen Sie dann den Ortsnamen, die Bewertung und Beispielbewertungen auf die erste Seite.

Unser Skript wird:

  1. Verwenden Sie Selenium, um die Seite zu laden
  2. Wechseln Sie zu BeautifulSoup, um den HTML-Code zu analysieren
  3. Finden Sie die Ortselemente mithilfe von CSS-Selektoren
  4. Extrahieren Sie den Namen, die Bewertung und die Rezensionen

Hier ist der vollständige Code:

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)

Dadurch werden Daten extrahiert wie:

[
  {
    ‘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.‘]
  }
]

Der entscheidende Vorteil – keine API-Limits! Sie können beliebige Daten im großen Maßstab extrahieren.

Einige Tipps für verantwortungsvolles Web Scraping:

  • Fügen Sie zufällige Verzögerungen hinzu, um eine Überlastung der Server zu vermeiden
  • Identifizieren Sie sich als normalen Browser, nicht als Bot
  • Respektieren Sie die robots.txt-Regeln
  • Verwenden Sie die Proxy-Rotation, um IP-Blockaden zu vermeiden

Schauen Sie sich unsere ausführliche Anleitung für viele weitere Google Maps-Scraping-Tipps an!

Key Take Away

Die Google Maps API ermöglicht leistungsstarke Geodatenfunktionen über eine einfache Schnittstelle:

  • Geokodieren Sie Adressen und umgekehrte Geokodierungskoordinaten
  • Berechnen Sie Entfernungen und Reisezeiten
  • Suchen und detaillieren Sie Orte, Wegbeschreibungen und mehr

Mithilfe des Anforderungsmoduls lässt es sich problemlos in Python integrieren. Bei größeren Arbeitslasten können Nutzungsbeschränkungen jedoch eine Herausforderung darstellen.

Web Scraping bietet eine skalierbare Alternative zum unbegrenzten Extrahieren von Geodaten aus Google Maps.

Python-Bibliotheken wie Selenium und BeautifulSoup erleichtern das Scrapen von Orten, Bewertungen, Wegbeschreibungen, Verkehrsstatistiken, Street View und mehr.

Hoffentlich haben Sie damit eine solide Grundlage geschaffen, um das volle Potenzial von Google Maps-Daten mithilfe der API oder durch Scraping auszuschöpfen – die Möglichkeiten sind endlos!

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *