Ik wil Google Maps dynamisch bevragen via de Google Directions API. Als voorbeeld, dit verzoek berekent de route van Chicago, IL naar Los Angeles, CA via twee waypoints in Joplin, MO en Oklahoma City, OK:
Het geeft een resultaat in JSON formaat.
Hoe kan ik dit in Python doen? Ik wil zo'n verzoek sturen, het resultaat ontvangen en het parsen.
Ik raad aan om de geweldige requests bibliotheek te gebruiken:
import requests
url = 'http://maps.googleapis.com/maps/api/directions/json'
params = dict(
origin='Chicago,IL',
destination='Los+Angeles,CA',
waypoints='Joplin,MO|Oklahoma+City,OK',
sensor='false'
)
resp = requests.get(url=url, params=params)
data = resp.json() # Check the JSON Response Content documentation below
JSON Response Inhoud: http://docs.python-requests.org/en/latest/user/quickstart/#json-response-content
Gebruik de requests library, druk de resultaten mooi af zodat je de sleutels/waarden die je wilt extraheren beter kunt lokaliseren, en gebruik dan geneste for loops om de gegevens te ontleden. In het voorbeeld haal ik stap voor stap rij-instructies eruit.
import json, requests, pprint
url = 'http://maps.googleapis.com/maps/api/directions/json?'
params = dict(
origin='Chicago,IL',
destination='Los+Angeles,CA',
waypoints='Joplin,MO|Oklahoma+City,OK',
sensor='false'
)
data = requests.get(url=url, params=params)
binary = data.content
output = json.loads(binary)
# test to see if the request was valid
#print output['status']
# output all of the results
#pprint.pprint(output)
# step-by-step directions
for route in output['routes']:
for leg in route['legs']:
for step in leg['steps']:
print step['html_instructions']