Как получить агрегированный результат по запросу с помощью Google API? - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь получить информацию address из запроса, используя Google API и json . Но я получаю только адрес последнего элемента, а не агрегированные. Как решить эту проблему в python ?

Мой код состоит из 3 частей: 1. извлечь информацию о широте и долготе из файла json (sample.json). 2. запросить адрес с помощью Google API 3. извлечь адрес из результата запроса (формат json) и записать файл (test.csv)

Во-первых, мой входной файл json (sample.json) выглядит следующим образом:

{"last_updated":1554148141,
"ttl":10,
"data":{"stations":
[{"station_id":"1","external_id":"0b0fda98-08f3-11e7-a1cb-3863bb33a4e4","name":"Métro Champ-de-Mars (Viger / Sanguinet)","short_name":"6001","lat":45.51035067563653,"lon":-73.55650842189789,"rental_methods":["CREDITCARD","KEY"],"capacity":33,"electric_bike_surcharge_waiver":false,"eightd_has_key_dispenser":false,"has_kiosk":true},

{"station_id":"2","external_id":"0b0fdf05-08f3-11e7-a1cb-3863bb33a4e4","name":"Ste-Catherine / Dezery","short_name":"6002","lat":45.539385081961676,"lon":-73.54099988937377,"rental_methods":["CREDITCARD","KEY"],"capacity":19,"electric_bike_surcharge_waiver":false,"eightd_has_key_dispenser":false,"has_kiosk":true},

{"station_id":"3","external_id":"0b0fe114-08f3-11e7-a1cb-3863bb33a4e4","name":"Clark / Evans","short_name":"6003","lat":45.51100666600306,"lon":-73.56760203838348,"rental_methods":["CREDITCARD","KEY"],"capacity":19,"electric_bike_surcharge_waiver":false,"eightd_has_key_dispenser":false,"has_kiosk":true}
 ] } }

И следующий мой код на python: (API_KEY - это мой личный ключ, помеченный как «****».)

import json
import requests
import csv


input_json = json.load(open('sample.json'))
for i in input_json ['data']['stations']:
    lat = i['lat']
    lon = i['lon']

API_URL = "https://maps.googleapis.com/maps/api/geocode/json?latlng={},{}&formatted_address&result_type=street_address&key=".format(
    lat, lon)
API_KEY = '***********'

try:

     response = requests.get(API_URL+API_KEY, auth=('user','pass'))
     data = response.json()
     address = []
     for i in data['results']:
         a = i['formatted_address']
         address.append(a)
         f = csv.writer(open('test.csv', 'w'))
         f.writerow(address)

except Exception as e:
         print(e)
else:
         print(address)

Когда я запускаю этот код, результат выглядит следующим образом:

['2025 Rue Clark, Montréal, QC H2X 2R6, Canada', '2026 Rue Clark, Montréal, QC H2X 1Y8, Canada']

Согласно запросу Google, результат должен показать всего 6 адресов (для каждого элемента 2 адреса). Мой результат показывает только 2 адреса последнего элемента.

Я не знаю, как правильно кодировать часть цикла. Не могли бы вы помочь мне с этим вопросом?

...