我正在设置一个简单的Google Places API python请求代码。 它应该返回与文本查询匹配的所有位置。但是,它正在返回其他位置,而不是我正在寻找的位置。
它主要适用于学校,图书馆,教堂,礼拜场所等场所。但是,我的搜索词中至少有一个不会返回预期的结果,而是会返回几乎所有其他内容。
import requests
import json
import pandas as pd
from tqdm import tqdm
global points
points = pd.DataFrame()
search = pd.read_csv("Search Terms.csv")
global page
global Type
page = 1
APIKEY = "MY API KEY"
def findPlaces(loc=("-33.8901","150.7191000"),radius=35000, pagetoken = None):
global points
global page
global Type
global Term
lat, lng = loc
type = Term
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 "")
response = requests.get(url)
res = json.loads(response.text)
print(Type, "page: ", page)
for result in res["results"]:
temp = {
"Name" : result["name"],
"Lat" : result["geometry"]["location"]["lat"],
"Lon" : result["geometry"]["location"]["lng"],
"Type" : Type,
"Search Term" : Term
}
points = points.append(temp, ignore_index= True)
pagetoken = res.get("next_page_token",None)
page += 1
return pagetoken
pagetoken = None
for index, row in search.iterrows():
termraw = row['Terms']
Type = row['Type']
terms = termraw.split(',')
i = 0
while i < len(terms):
Term = terms[i]
pagetoken = findPlaces(pagetoken=pagetoken)
import time
time.sleep(5)
if not pagetoken:
i += 1
print("cleaning")
points = points.drop_duplicates(subset ="Name", keep = 'first')
points.to_csv('outputaged.csv')
据我所知,例如,如果我输入“养老院”,我应该得到类似于https://www.google.com/maps/search/Nursing+home/@-33.8132784,150.9377676,12z
的回报。但是,实际结果似乎是除这些因素以外的所有因素。
我从未真正完成过任何Google API请求,因此任何帮助将非常有用。 谢谢,
输出的代码段已附加。
0 -33.8688197 151.2092955 Sydney
1 -33.9166741 150.8525853 Bunnings Hoxton Park
2 -33.8641885 150.6407872 BP
3 -33.7961736 150.7070948 Penrith Anglican College
4 -33.8747193 150.7150313 Workers Hubertus Country Club
5 -33.7849683 150.6752473 Caroline Chisholm College
6 -33.7877012 150.7714889 Blue Cattle Dog Hotel
7 -33.7843743 150.7087178 Penrith Christian School
8 -33.789197 150.668553 Subway® Restaurant
9 -33.925649 150.854178 Goodstart Early Learning Hoxton Park
11 -33.7889187 150.6689905 Asian Pearl Chinese Restaurant
12 -33.8367893 150.7617273 Twin Creeks Golf & Country Club
15 -33.9090231 150.7862319 Czecho Slovakian Country Club
16 -33.8956637 150.8520624 Cecil Hills High School
17 -33.803243 150.804976 Liquorland Erskine Park
18 -33.7942519 150.788228 Red Rooster
19 -34.065 150.814167 Campbelltown
20 -33.9372737 150.845665 Carnes Hill Marketplace
21 -33.7888697 150.6684124 Glenmore Park Realty
答案 0 :(得分:1)
对于以后遇到此问题的任何人,这是问题: 我给API提供的是“类型”键,而不是“关键字”键。这不是很好的记录。
类型必须在this列表中。否则它将返回该位置的所有内容