浏览端点中的Foursquare API列表,但搜索端点中的Foursquare API列表

时间:2018-10-03 15:49:03

标签: python foursquare

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

是否有解决此问题的方法,或者我为此使用了探索功能?

0 个答案:

没有答案