2014-07-10 1 views
0

공명은 무엇이 될 수 있습니까?Google 크롬에서 제대로 작동하는 링크를 복사 할 때 파이썬에서 Google지도 API의 잘못된 응답을 받았습니다.

{ 
"html_attributions": [], 
"next_page_token": "CqQDkgEAAFOOGlx1ov_HPteOZTqmNHkYFmUDfDDmlQn0XpcBzeYWgCNmexMAOS1KRvaStWwFRvLDDKEUsGyFwguXrBHTuvdfmu4REV4VPH-ALqsxb7cl9wrRLhUQTyjnMilf68qgafL2Eb7GZ3OXH2s4vpsC2HRaclVPbp53kz1NZY7NeKDNPzUOW-tIHpw_X3U_2NhfUbDu-1gMFOOaMCOoaQt7FHW51ktIm4UFrn6OfytS_VdIp7RgOMp1HISIbx8GW2l1MKnUZaPEztlwJi3OvK9n4waWOvS7uUd_PPy1xPYJWv-yKtG3Ehok-LOjCv-jkB_Ki4uqjWCGW4kD5L_aKp2gjECT-ny-1aTpjtJc8a9p1Fhx_Wdbf2vee5hCZfbaSxseRgsHd0POFPaIFwIZYg6GJHHkbjW6gfbnI67oI9nC3dTH86gWzyFCsG_n0hyhCg-oHzO3mxlaDDxCM6xv1Nbp5AY4u03NGIpzTNoRekJ-EtA1d7cYu-yZ2XFzHXJGkxyWHobe_UdwLa6b4ZUQD8qCoKGQ429MxeY6x5R05AYg4Q1BEhA7UkpwystS_CoYKCCJXeoZGhRToQEqwA-RwiEMbAqwfN3n89aVZg", 
"results": [...], 
"status": "OK" 
} 

코드 : 잘 크롬에서

{ 
    "html_attributions" : [], 
    "results" : [], 
    "status" : "INVALID_REQUEST" 
} 

# -*- coding: utf-8 -*- 
import urllib 
import json 
import csv 
import hashlib 
import time 


YOUR_API_KEY = "SECRET" 


def geocode(addr): 
    url = ("http://maps.googleapis.com/maps/api/" 
      "geocode/json?address=%s&sensor=false") % (urllib.quote(addr)) 
    data = urllib.urlopen(url).read() 
    info = json.loads(data).get("results")[0].get("geometry").get("location") 
    return info 


def geocode2(r): 
    info = [] 

    url_base = ("https://maps.googleapis.com/maps/api/place/search/json?" 
       "location=%s,%s&radius=500&types=food&sensor=false&" 
       "key=%s&pagetoken=%s") % (
       r['lat'], 
       r['lng'], 
       YOUR_API_KEY, 
       '' 
       ) 

    data = urllib.urlopen(url_base).read() 
    info.extend(json.loads(data).get("results")) 
    token = json.loads(data).get("next_page_token") 

    while token: 
     time.sleep(5) 
     new_url = url_base + token 
     data = urllib.urlopen(new_url).read() 
     token = json.loads(data).get("next_page_token") 
     info.extend(json.loads(data).get("results")) 

    print len(info) 

    l = [] 
    for i in info: 
     t = (i["name"], 
      i["vicinity"], 
      i["geometry"]["location"]["lat"], 
      i["geometry"]["location"]["lng"] 
      ) 

     l.append(t) 
    return l 


for place in geocode2(geocode('Polska, Warszawa, Pl. Zawiszy 1')): 
    print place 

출력 : https://gist.github.com/andilab/078ea76b1f4d70704b50

+2

요청 코드를 표시해야합니다. – goncalopp

+0

시간이 많이 걸릴 것으로 생각됩니다. while 루프에서 next_page_token()을 사용하여 새로운 Google 장소를 가져오고 작동하는'time.sleep (5)'를 추가했습니다. – andi

답변

1

내가 시간에 대해 많은 것 같다. 나는 next_page_token()을 사용하여 새로운 Google 장소를 가져 오는 while 루프에서 time.sleep (5)을 추가했으며 작동합니다.

docs의 할당량이 내 추측을 확인합니다.

리턴 될 수있는 최대 결과 수는 페이지 토큰을 발행 할 때 사이 짧은 지연이 60 이고 때 유효해질 것이다. 에서

: Google Places API Doc

가치에 대한 언급, 그 60 될 것입니다 반환 장소 어쨌든 최대 수!

관련 문제