Python,Google Places API
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python,Google Places API相关的知识,希望对你有一定的参考价值。
我试图使用对Google Places API的python请求,在给定半径内的某个位置获取所有类型的餐厅。这是我的简单代码:
import requests
import json
APIKEY = "AIzaSyBFx8hqftDOlrSWRTiOSowjwfeS1OQtBpw"
def findPlaces(loc=("51.1079","17.0385"),radius=3000, pagetoken = None):
lat, lng = loc
type = "restaurant"
url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={lat},{lng}&radius={radius}&type={type}&key={APIKEY}{pagetoken}".format(lat = lat, lng = lng, radius = radius, type = type,APIKEY = APIKEY, pagetoken = "&pagetoken="+pagetoken if pagetoken else "")
print(url)
response = requests.get(url)
res = json.loads(response.text)
print(res)
for result in res["results"]:
info = ";".join(map(str,[result["name"],result["geometry"]["location"]["lat"],result["geometry"]["location"]["lng"],result.get("rating",0),result["place_id"]]))
print(info)
pagetoken = res.get("next_page_token",None)
return pagetoken
pagetoken = None
while True:
pagetoken = findPlaces(pagetoken=pagetoken)
if not pagetoken:
break
然而,即使认为它对结果的第一页起作用也很好,但是没有明显的原因它没有进入第二页(它只是从API返回INVALID REQUEST)。此外,有趣的是,因为我将我的网址打印到控制台,我可以通过点击它来关注这个非常具体的网址,当我这样做时,它完美地工作,API返回所需的餐馆列表。
我认为这是一个编码urls的字符串的问题,我用python的urlencode替换了格式,但结果保持不变。由于我没有想法,我问:有没有人有这样的问题?
在此先感谢您的帮助。
我用新的纬度和经度对它进行了测试,得到了3个页面,每个20页,总结达到60个谷歌文档说。
https://developers.google.com/places/web-service/search
next_page_token包含一个令牌,可用于返回最多20个其他结果。如果没有要显示的其他结果,则不会返回next_page_token。可返回的最大结果数为60.发出next_page_token和有效时间之间会有短暂的延迟。
import requests
import json
APIKEY = "AIzaSyBFx8hqftDOlrSWRTiOSowjwfeS1OQtBpw"
def findPlaces(loc=("35.701474","51.405288"),radius=4000, pagetoken = None):
lat, lng = loc
type = "restaurant"
url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={lat},{lng}&radius={radius}&type={type}&key={APIKEY}{pagetoken}".format(lat = lat, lng = lng, radius = radius, type = type,APIKEY = APIKEY, pagetoken = "&pagetoken="+pagetoken if pagetoken else "")
print(url)
response = requests.get(url)
res = json.loads(response.text)
# print(res)
print("here results ---->>> ", len(res["results"]))
for result in res["results"]:
info = ";".join(map(str,[result["name"],result["geometry"]["location"]["lat"],result["geometry"]["location"]["lng"],result.get("rating",0),result["place_id"]]))
print(info)
pagetoken = res.get("next_page_token",None)
print("here -->> ", pagetoken)
return pagetoken
# pagetoken = "CpQFhwIAADQWOcVI1wll-B869Z24El48rXw18gKoab_keD65V18zFEvPjKIfrS79Pc_vXJcZQtOuF0RObQG20ph-GE3ssP3k1fu8zsYbw5g3UPbSjAvQLdXkdD1qAWztXj7hc5Kxc4pYRyGM1_ljVOHg3Py_zSlYscnoNjCvRua2MDQgusCsEquNqGREFdvhjDkbeMhEFYxHucTnIn96OxIJEpamePTHsBooYyPBaa_ejGZ_C99QeDjpSkSKBgEe3aL1uWKlYhsGKh7biQUR5rKsKPodwccLIrW8Gr5tag3NH0sLPExHHvqzlpkj--KIuydTVjPH7u2zHxmPByServ2S5xjXYUBRr-ly3e1xPsVMhZZH9TxfttCIHLscBvpvCswIfaGYdl3bEzsrFISfpp0rpKtlp9gWGY7Tbk2n6s3etCHQEHn2qmM8bsJwkZV81pUWN0j9C9RX-ywOyIKY2yp1w_Iq1mRwOwY4mckbicOoooHiV6JER4xe7Kizw9hbXOnezn_NMk15TLwRoXlfL1s73uwogo-VWE8c-V1HqRpWQSyudRhLwhOEclrICXIdxICOgTgYO1z57xCEerw3QUL_7MPDrlbbh_AlX8I6Jfe8IhQ1Fkqu_njatm6aBTjkp2CSqlvZJpI_Lrv330VcyFEqBkGn7NJew3I9xofSrBaXFa8ABi6DXQm6-yC32OEyf7GHNXINjT1IB0yh6KR6c0qzaqiqOzKcuuai9XqEMQNNKyi6EuhzH5TP9YA56N3JhnXRFhs2aWHZhLlieVI6_uqzpZSgYjUem8aQrMTlmHw0kIYU8I-Ca041C4Zm2gMezwygRrhzsOoAmbmu96nft0KuIWTB3A_xGVKYQ2qjb2KRM7nsglnSEhDoNs8EhvuIm0FQs30YSCp5GhRO3b3Tn5rsLuwiWgu8hwEGhL0S1A"
pagetoken = None
while True:
pagetoken = findPlaces(pagetoken=pagetoken)
import time
time.sleep(5)
if not pagetoken:
break
以上是关于Python,Google Places API的主要内容,如果未能解决你的问题,请参考以下文章
反应:Google Places API/ Places 详细信息
新的 Google API 密钥“Google Maps API v3”不适用于 Google Places API?
Android Google Places API,getAutocompletePredictions 返回状态“PLACES_API_ACCESS_NOT_CONFIGURED”
使用 google-places-api 的简单 html 页面的 ApiNotActivatedMapError