Google Maps Services的Python客户端无法通过Page_Token

时间:2016-09-08 15:59:10

标签: python google-maps

我正在尝试使用Google地图服务的Python客户端来使用Places API提取地点列表。

以下是GitHub页面:https://github.com/googlemaps/google-maps-services-python 以下是文档页面:https://googlemaps.github.io/google-maps-services-python/docs/2.4.4/#module-googlemaps.exceptions

在.places def中,我需要以字符串格式输入page_token才能获得下一个10个列表。当我运行下面的代码时,它一直显示INVALID_REQUEST

这是我的代码:

places_result = gmaps.places(query="hotels in Singapore", page_token='')
for result in places_result['results']:
    print(result['name'])
try :
places_result = gmaps.places(query="hotels in Singapore", page_token=places_result['next_page_token'])
except ApiError as e:
    print(e)
else:
    for result in places_result['results']:
    print(result['name'])

1 个答案:

答案 0 :(得分:6)

好的,经过数小时的试验和错误。我注意到我需要添加一个time.sleep(2)才能使它工作。我不确定为什么但它有效。

失败了time.sleep(1),time.sleep(2)及以上将解决问题。

希望有人可以了解背后的原因。

这是我的代码,用于检索地方并转到下一页直到结束。记得要更换  1.你的关键在这里你的钥匙'和  2.您要搜索的字符串'搜索某些内容'。

import googlemaps
import time

gmaps = googlemaps.Client(key='YOUR KEY HERE')

def printHotels(searchString, next=''):
    try:
        places_result = gmaps.places(query=searchString, page_token=next)
    except ApiError as e:
        print(e)
    else:
        for result in places_result['results']:
            print(result['name'])
    time.sleep(2)
    try:
        places_result['next_page_token']
    except KeyError as e:
        print('Complete')
    else:
        printHotels(searchString, next=places_result['next_page_token'])

if __name__ == '__main__':
    printHotels('SEARCH SOMETHING')