Meteen naar de inhoud

Hoe u de Google Maps API in Python gebruikt: een korte handleiding

De Google Maps API opent een wereld van krachtige geospatiale mogelijkheden via een eenvoudige RESTful-interface. Met slechts een paar regels code kunt u adressen geocoderen, afstanden berekenen, aangepaste kaarten weergeven en nog veel meer.

In deze uitgebreide handleiding leert u hoe u met Python aan de slag kunt gaan met de Google Maps API. We behandelen:

  • Een API-sleutel verkrijgen
  • Geocoderen van adressen en ophalen van coördinaten
  • Berekenen van afstanden en reistijden
  • API-limieten overwinnen met webscraping
  • Google Maps-gegevens schrapen met Python

En nog veel meer! Laten we erin duiken.

Inleiding tot de Google Maps-API

De Google Maps API is een webservice die via een JSON/XML-interface toegang biedt tot het krachtige kaartplatform van Google. Hiermee kunt u Google Maps op webpagina's insluiten en kaartstijlen, markeringen, polygonen en overlays aanpassen.

Maar de API maakt ook een aantal ongelooflijk nuttige geospatiale mogelijkheden mogelijk, zoals:

  • Geocodering – Straatadressen omzetten naar geografische coördinaten
  • Omgekeerde geocodering – Geografische coördinaten omzetten naar het dichtstbijzijnde adres
  • Afstandsmatrix – Berekening van reisafstand en tijd tussen plaatsen
  • Bereiding – Point-to-point routebeschrijvingen en routes verkrijgen
  • plaatsen – Zoeken naar en verkrijgen van details over lokale plaatsen en bedrijven
  • Kaarten statisch – Het genereren van statische kaartafbeeldingen

Met meer dan 15 API's en meer dan 100 mogelijkheden is de reikwijdte ongelooflijk. En de prijzen van de Google Maps API zijn zeer betaalbaar: veel mogelijkheden zijn gratis tot aan de gebruikslimieten.

Dat is waar de Python-integratie van pas komt. Je hebt toegang tot al deze API's via eenvoudige Python-code, automatiseert workflows en bouwt krachtige geospatiale applicaties.

Laten we beginnen met het instellen.

Een Google Maps API-sleutel verkrijgen

Als u een Google Maps API wilt gebruiken, heeft u eerst een API-sleutel nodig die uw project identificeert. Hier is hoe:

  1. Ga naar uw Google Cloud-console en log in met uw Google-account.

  2. Klik op het navigatiemenu en selecteer API's en services > Inloggegevens.

  3. Klik op de pagina Referenties op Credentials maken en selecteer vervolgens API-sleutel.

  4. Kopieer deze nieuwe API-sleutel en bewaar deze op een veilige plek. Wij gaan hem binnenkort gebruiken!

Met de sleutel kunt u API's inschakelen die u wilt gebruiken. Voor deze handleiding concentreren we ons op twee essentiële zaken:

  • Geocoderings-API
  • Afstandsmatrix-API

Klik bovenaan op de pagina Inloggegevens op API's en services inschakelen. Zoek naar die API's en schakel ze in voor uw project.

Nu zijn we klaar om de API's in Python te gaan gebruiken.

Geocoderingsadressen in Python

Een van de nuttigste toepassingen van de Google Maps API is het converteren van straatadressen naar geografische coördinaten (breedte- en lengtegraad). Dit proces wordt genoemd geocodering.

Met de Geocoding API kunt u elk adres doorgeven en de locatiecoördinaten ervan terugkrijgen. Hier is een Python-functie om precies dat te doen:

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

Hierdoor wordt een verzoek ingediend bij de Geocoding API, waarbij het adres als parameter wordt doorgegeven. Als dit lukt, worden de lengte- en breedtecoördinaten uit het antwoord gehaald.

Laten we het testen:

api_key = ‘YOUR_API_KEY‘ 

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

lat, lng = geocode_address(api_key, address)

print(lat, lng)

Dit zou de coördinaten 37.4224764, -122.0842499 moeten afdrukken.

We hebben nu een eenvoudige manier om adressen naar geografische coördinaten in Python te converteren met behulp van de Google Maps Geocoding API!

Enkele gebruiksscenario's voor geocodering:

  • Zet locaties op een kaart uit een lijst met adressen
  • Analyseer de geografische spreiding van klanten
  • Tag databaserecords met lat/lng voor zoekopdrachten in de buurt

Maar wat als we de andere kant op willen gaan: geografische coördinaten omzetten in adressen?

Omgekeerde geocodering in Python

Met omgekeerde geocodering kunt u het adres ophalen dat het dichtst bij een bepaalde lat/lng-coördinaat ligt.

De Geocoding API verwerkt dit met de latlng parameter in plaats van 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

Laten we het testen:

lat = 37.4224764
lng = -122.0842499

address = reverse_geocode(api_key, lat, lng)

print(address) 

Hierop staat "1600 Amphitheatre Pkwy, Mountain View, CA 94043, VS".

Omgekeerde geocodering is handig voor het plotten van adressen op een kaart op basis van lengte- en breedtegraadgegevens.

Laten we nu kijken hoe we afstanden tussen plaatsen kunnen berekenen met de Google Maps API.

Afstand en reistijd berekenen in Python

De Distance Matrix API biedt reisafstand en tijd voor een matrix van herkomst en bestemmingen.

U kunt een reeks herkomsten en bestemmingen doorgeven, en de afstand en duur tussen elk herkomst-bestemmingspaar worden geretourneerd.

Hier is een voorbeeldverzoek:

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

Deze berekent de afstand en tijd van Vancouver en Seattle naar San Francisco en Victoria.

De rows de resultaten voor elk oorsprongspunt bevatten, en elements heeft de resultaten voor elke bestemming.

Enkele toepassingen van de Distance Matrix API:

  • Bereken de rijtijdradius voor een winkellocatie
  • Schat de levertijden van bestellingen
  • Optimaliseer routes voor een vloot chauffeurs

Dit demonstreert slechts een fractie van wat u kunt doen met de Google Maps API. Laten we nu eens kijken naar het overwinnen van enkele beperkingen.

De API-limieten van Google Maps overwinnen met webscrapen

De Google Maps API biedt uitstekende waarde met royale gratis limieten. Maar het zijn nog steeds tarief- en gebruikslimieten.

Zodra u deze overschrijdt, worden uw verzoeken beperkt of geblokkeerd. Voor apps met veel verkeer moet u mogelijk premium-abonnementen aanschaffen.

Een alternatief is Google Maps-gegevens schrapen rechtstreeks vanuit browsers die Python-bibliotheken gebruiken zoals Selenium, Beautiful Soup enz.

Hiermee worden API-limieten volledig vermeden, omdat u gegevens uit de front-end extraheert in plaats van de back-end-API's te gebruiken.

Door Google Maps te schrappen, heeft u de flexibiliteit om alle gewenste gegevens te extraheren:

  • Plaatsnamen, foto's, recensies, attributen etc.
  • Routebeschrijving en routes
  • Verkeersschattingen en populaire tijden
  • Street View-afbeeldingen

Laten we eens kijken naar het schrapen van enkele Google Maps-gegevens met Python.

Google Maps schrapen met Python en BeautifulSoup

Om webscraping van Google Maps te demonstreren, extraheren we enkele restaurantnamen en recensies.

Eerst zoeken we op Google Maps naar "restaurants in Vancouver". Schraap vervolgens de plaatsnaam, beoordeling en voorbeeldrecensies op de eerste pagina.

Ons script zal:

  1. Gebruik Selenium om de pagina te laden
  2. Schakel over naar BeautifulSoup om de HTML te parseren
  3. Zoek de plaatselementen met behulp van CSS-kiezers
  4. Extraheer de naam, beoordeling en recensies

Hier is de volledige 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)

Hiermee worden gegevens geëxtraheerd zoals:

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

Het belangrijkste voordeel: geen API-limieten! U kunt alle gegevens op schaal extraheren.

Enkele tips voor verantwoord webscrapen:

  • Voeg willekeurige vertragingen toe om overbelasting van servers te voorkomen
  • Identificeer u als een normale browser, niet als een bot
  • Respecteer de robots.txt-regels
  • Gebruik proxyrotatie om IP-blokkeringen te voorkomen

Bekijk onze gedetailleerde gids voor nog veel meer Google Maps-scrapingtips!

Key Takeaways

De Google Maps API maakt krachtige geospatiale mogelijkheden mogelijk via een eenvoudige interface:

  • Geocode-adressen en omgekeerde geocode-coördinaten
  • Bereken afstanden en reistijden
  • Zoek en detailleer plaatsen, routebeschrijvingen en meer

Het kan eenvoudig worden geïntegreerd met Python met behulp van de verzoekenmodule. Maar gebruikslimieten kunnen uitdagingen opleveren bij grotere werklasten.

Webscraping biedt een schaalbaar alternatief om onbeperkt georuimtelijke gegevens uit Google Maps te extraheren.

Python-bibliotheken zoals Selenium en BeautifulSoup maken het gemakkelijk om plaatsen, recensies, routebeschrijvingen, verkeersstatistieken, Street View en meer te verzamelen.

Hopelijk geeft dit je een solide basis om het volledige potentieel van Google Maps-gegevens te ontsluiten met behulp van de API of scraping – de mogelijkheden zijn eindeloos!

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *