Θέλω να κάνω δυναμικά ερωτήματα στους Χάρτες Google μέσω του Google Directions API. Ως παράδειγμα, αυτό το αίτημα υπολογίζει τη διαδρομή από το Σικάγο, IL προς το Λος Άντζελες, CA μέσω δύο σημείων διαδρομής στο Joplin, MO και στο Oklahoma City, OK:
Επιστρέφει ένα αποτέλεσμα σε μορφή JSON.
Πώς μπορώ να το κάνω αυτό στην Python; Θέλω να στείλω ένα τέτοιο αίτημα, να λάβω το αποτέλεσμα και να το αναλύσω.
Συνιστώ να χρησιμοποιήσετε τη φοβερή βιβλιοθήκη requests:
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: http://docs.python-requests.org/en/latest/user/quickstart/#json-response-content
Χρησιμοποιήστε τη βιβλιοθήκη requests, εκτυπώστε αρκετά τα αποτελέσματα ώστε να μπορείτε να εντοπίσετε καλύτερα τα κλειδιά/τιμές που θέλετε να εξάγετε, και στη συνέχεια χρησιμοποιήστε εμφωλευμένους βρόχους for για να αναλύσετε τα δεδομένα. Στο παράδειγμα εξάγω βήμα προς βήμα οδηγίες οδήγησης.
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']