Passer au contenu

Comment utiliser l'API Google Maps en Python : un guide rapide

L'API Google Maps ouvre un monde de puissantes capacités géospatiales via une interface RESTful simple. Avec seulement quelques lignes de code, vous pouvez géocoder des adresses, calculer des distances, afficher des cartes personnalisées et bien plus encore.

Dans ce guide complet, vous apprendrez comment démarrer avec l'API Google Maps à l'aide de Python. Nous couvrirons :

  • Obtenir une clé API
  • Géocodage des adresses et récupération des coordonnées
  • Calcul des distances et des temps de trajet
  • Surmonter les limites de l'API grâce au web scraping
  • Récupérer les données de Google Maps avec Python

Et bien plus encore ! Allons-y.

Introduction à l'API Google Maps

L'API Google Maps est un service Web qui permet d'accéder à la puissante plateforme cartographique de Google via une interface JSON/XML. Il vous permet d'intégrer Google Maps sur des pages Web, de personnaliser les styles de carte, les marqueurs, les polygones et les superpositions.

Mais l'API permet également des fonctionnalités géospatiales incroyablement utiles telles que :

  • Géocodage – Conversion d’adresses postales en coordonnées géographiques
  • Géocodage inversé – Conversion des coordonnées géographiques à l’adresse la plus proche
  • Matrice de distance – Calculer la distance et le temps de trajet entre les lieux
  • ACCESSIBILITE : – Obtenir des directions et des itinéraires point à point
  • Des endroits – Rechercher et obtenir des détails sur des lieux et des entreprises locales
  • Cartes statiques – Génération d’images cartographiques statiques

Avec plus de 15 API et plus de 100 fonctionnalités, la portée est incroyable. Et le prix de l'API Google Maps est très abordable : de nombreuses fonctionnalités sont gratuites jusqu'aux limites d'utilisation.

C'est là que l'intégration Python s'avère utile. Vous pouvez accéder à toutes ces API via un simple code Python, automatiser les flux de travail et créer de puissantes applications géospatiales.

Commençons par nous installer.

Obtenir une clé API Google Maps

Pour utiliser une API Google Maps, vous devez d'abord obtenir une clé API qui identifie votre projet. Voici comment:

  1. Allez à Google Cloud Console et connectez-vous avec votre compte Google.

  2. Cliquez sur le menu de navigation et sélectionnez API et services > Informations d'identification.

  3. Sur la page Informations d'identification, cliquez sur Créer des informations d'identification, puis sélectionnez Clé API.

  4. Copiez cette nouvelle clé API et enregistrez-la dans un endroit sûr. Nous l'utiliserons bientôt !

Avec la clé, vous pouvez commencer à activer les API que vous souhaitez utiliser. Pour ce guide, nous nous concentrerons sur deux éléments essentiels :

  • API de géocodage
  • API de matrice de distance

Sur la page Informations d'identification, cliquez sur Activer les API et les services en haut. Recherchez ces API et activez-les pour votre projet.

Nous sommes maintenant prêts à commencer à utiliser les API en Python.

Géocodage des adresses en Python

L'une des applications les plus utiles de l'API Google Maps consiste à convertir les adresses postales en coordonnées géographiques (latitude et longitude). Ce processus est appelé géocodage.

L'API de géocodage vous permet de transmettre n'importe quelle adresse et de récupérer ses coordonnées de localisation. Voici une fonction Python pour faire exactement cela :

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

Cela envoie une requête à l'API de géocodage, en passant l'adresse en paramètre. En cas de succès, il extrait les coordonnées de latitude et de longitude de la réponse.

Testons-le :

api_key = ‘YOUR_API_KEY‘ 

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

lat, lng = geocode_address(api_key, address)

print(lat, lng)

Cela devrait imprimer les coordonnées 37.4224764, -122.0842499.

Nous disposons désormais d'un moyen simple de convertir des adresses en coordonnées géographiques en Python à l'aide de l'API de géocodage de Google Maps !

Quelques cas d'utilisation du géocodage :

  • Tracer des emplacements sur une carte à partir d'une liste d'adresses
  • Analyser la répartition géographique des clients
  • Étiquetez les enregistrements de la base de données avec lat/lng pour les recherches de proximité

Mais que se passe-t-il si nous voulons procéder dans l’autre sens : convertir des coordonnées géographiques en adresses ?

Géocodage inversé en Python

Le géocodage inversé vous permet de récupérer l'adresse la plus proche d'une coordonnée lat/lng donnée.

L'API de géocodage gère cela avec le latlng paramètre au lieu 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

Testons-le :

lat = 37.4224764
lng = -122.0842499

address = reverse_geocode(api_key, lat, lng)

print(address) 

Ceci imprime "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA".

Le géocodage inversé est utile pour tracer des adresses sur une carte à partir de données de latitude/longitude.

Voyons ensuite comment calculer les distances entre les lieux avec l'API Google Maps.

Calculer la distance et le temps de trajet en Python

L'API Distance Matrix fournit la distance et le temps de trajet pour une matrice d'origines et de destinations.

Vous pouvez transmettre un ensemble d'origines et de destinations, et cela renverra la distance et la durée entre chaque paire origine-destination.

Voici un exemple de demande :

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

Ceci calcule la distance et le temps entre Vancouver et Seattle et San Francisco et Victoria.

La rows contiennent les résultats pour chaque point d'origine, et elements a les résultats pour chaque destination.

Quelques utilisations de l'API Distance Matrix :

  • Calculer le rayon de temps de trajet pour un emplacement de magasin
  • Estimer les délais de livraison des commandes
  • Optimiser les itinéraires pour une flotte de chauffeurs

Cela ne montre qu'une fraction de ce que vous pouvez faire avec l'API Google Maps. Voyons ensuite comment surmonter certaines limitations.

Surmonter les limites de l'API Google Maps avec le Web Scraping

L'API Google Maps offre un excellent rapport qualité-prix avec des limites gratuites généreuses. Mais il s’agit toujours de limites de débit et d’utilisation.

Une fois que vous les dépassez, vos demandes commencent à être limitées ou bloquées. Pour les applications à fort trafic, vous devrez peut-être acheter des forfaits premium.

Une alternative consiste à récupérer les données de Google Maps directement depuis les navigateurs utilisant des bibliothèques Python comme Selenium, Beautiful Soup etc.

Cela évite complètement les limites des API puisque vous extrayez les données du front-end plutôt que d'utiliser les API back-end.

Le scraping de Google Maps vous offre la flexibilité d'extraire toutes les données que vous souhaitez :

  • Noms de lieux, photos, avis, attributs, etc.
  • Itinéraires et itinéraires
  • Estimations du trafic et heures de fréquentation
  • Images Street View

Jetons un coup d'œil rapide à la récupération de certaines données Google Maps avec Python.

Scraper Google Maps avec Python et BeautifulSoup

Pour illustrer le web scraping de Google Maps, nous extrairons quelques noms et avis de restaurants.

Nous allons d’abord rechercher « restaurants à Vancouver » sur Google Maps. Grattez ensuite le nom du lieu, la note et les exemples d’avis sur la première page.

Notre script va :

  1. Utilisez Selenium pour charger la page
  2. Basculez vers BeautifulSoup pour analyser le HTML
  3. Rechercher les éléments de lieu à l'aide des sélecteurs CSS
  4. Extraire le nom, la note et les avis

Voici le code complet :

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)

Cela extraira des données telles que :

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

Le principal avantage : aucune limite d’API ! Vous pouvez extraire n’importe quelle donnée à grande échelle.

Quelques conseils pour un web scraping responsable :

  • Ajoutez des délais aléatoires pour éviter de surcharger les serveurs
  • Identifiez-vous comme un navigateur normal, pas comme un robot
  • Respecter les règles du fichier robots.txt
  • Utilisez la rotation du proxy pour éviter les blocages IP

Consultez notre guide détaillé pour de nombreux autres conseils de scraping Google Maps !

Faits marquants

L'API Google Maps offre de puissantes fonctionnalités géospatiales via une interface simple :

  • Adresses de géocodage et coordonnées de géocodage inversé
  • Calculer les distances et les temps de trajet
  • Rechercher et détailler des lieux, des directions et plus encore

Il s'intègre facilement à Python à l'aide du module de requêtes. Mais les limites d’utilisation peuvent poser des problèmes pour les charges de travail plus importantes.

Le Web scraping offre une alternative évolutive pour extraire des données géospatiales de Google Maps sans limites.

Les bibliothèques Python comme Selenium et BeautifulSoup facilitent la recherche de lieux, d'avis, d'itinéraires, de statistiques de trafic, de Street View et bien plus encore.

Espérons que cela vous donne une base solide pour libérer tout le potentiel des données Google Maps à l’aide de l’API ou du scraping – les possibilités sont infinies !

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *