在Foursquare开发人员文档中,它提到通过使用Explore端点,API将返回推荐或顶级场所。我之所以要使用搜索端点,是因为我不想要最高/推荐列表。
使用limit = 100
和radius = 10000
,我的探索端点如下;
def getNearbyVenues(names, latitudes, longitudes):
venues_list = []
for name, lat, lng in zip(names, latitudes, longitudes):
url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(
client_id,
client_secret,
ver,
lat,
lng,
radius,
limit)
results = requests.get(url).json()["response"]['groups'][0]['items']
venues_list.append([(name,
lat,
lng,
v['venue']['name'],
v['venue']['categories'][0]['name'],
v['venue']['location']['lat'],
v['venue']['location']['lng']
) for v in results])
nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
nearby_venues.columns = ['Area',
'Area_Latitude',
'Area_Longitude',
'Venue',
'Venue_Category',
'Venue_Latitude',
'Venue_Longitude'
]
return(nearby_venues)
为了使用搜索端点,我对代码进行了如下修改;
def getNearbyVenues(names, latitudes, longitudes):
venues_list = []
for name, lat, lng in zip(names, latitudes, longitudes):
url = 'https://api.foursquare.com/v2/venues/search?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(
client_id,
client_secret,
ver,
lat,
lng,
radius,
limit)
results = requests.get(url).json()["response"]['venues']
venues_list.append([(name,
lat,
lng,
v['name'],
v['categories'][0]['name'],
v['location']['lat'],
v['location']['lng']
) for v in results])
nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
nearby_venues.columns = ['Area',
'Area_Latitude',
'Area_Longitude',
'Venue',
'Venue_Category',
'Venue_Latitude',
'Venue_Longitude'
]
return(nearby_venues)
它总是给我错误,其中之一是“字符串索引必须为整数”。
我什至使用result['response']['venue'].keys())
检查密钥,以确保我使用正确的路径。
似乎对于搜索['response'] ['venue'] [index number],我不确定该如何循环...
是否有解决此问题的方法,或者我为此使用了探索功能?