首页 > 解决方案 > 来自探索端点但不是来自搜索端点的 Foursquare API 列表

问题描述

在 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] 我不确定如何循环...

是否有解决此问题的方法,或者我坚持使用 explore 来解决这个问题?

标签: pythonfoursquare

解决方案


推荐阅读