Foursquare Venue API&结果数量,以更有效的方式?

时间:2011-12-15 21:23:23

标签: api pagination offset foursquare

我想问一下,除了这些选项之外,是否有更有效的方法可以获得超过50个结果?

我正在使用当前的foursquare api进行搜索https://developer.foursquare.com/docs/venues/search

我想要的是偏移选项,以获得更多结果,但似乎没有这样的选择。

有替代解决方案吗? 先感谢您。

5 个答案:

答案 0 :(得分:1)

实际上这里没有提到另一种选择(尽管不是分页)

使用(实验?)categoryId过滤器。

您可以使用不同的类别ID搜索单个点(ll)几次,从而为您提供许多结果(一些重复,因为场地可以有多个类别)。

所以你可以在同一个地方搜索'美食'场地和'夜生活'场地,得到100个结果,站在50 ...表示它是100个结果,但不是唯一的结果,可能是重复的。我认为这比尝试使用浏览半径更有效。

不是分页,但会比普通搜索提供更多结果 - 即使在城市地区也是如此。

但是,有一种方法可以在一个点上提取超过50个是不可能的,但可能会很好:)

答案 1 :(得分:1)

你应该使用场地探索偏移和限制作为参数, 场所探索为您提供了totalResults,您可以使用此响应来计算分页中所需的页数

例如假设totalResults为90(注意偏移和限制参数值) 在第一次请求中: https://api.foursquare.com/v2/venues/explore?client_id=client_id&client_secret=client_secret&v=20150825&near=city_name&categoryId=category_id&intent=browse&offset=0&limit=30

在第二个请求中: https://api.foursquare.com/v2/venues/explore?client_id=client_id&client_secret=client_secret&v=20150825&near=city_name&categoryId=category_id&intent=browse&offset=30&limit=30

第三个请求中的

https://api.foursquare.com/v2/venues/explore?client_id=client_id&client_secret=client_secret&v=20150825&near=city_name&categoryId=category_id&intent=browse&offset=60&limit=30

对于90个结果,您可以获得具有上述三个请求的所有记录

答案 2 :(得分:0)

不敢。目前没有分页,为了找到你需要移动搜索区域的更多场所,就像你突出显示的答案一样。我同意,分页虽然很方便!

答案 3 :(得分:0)

对于资源管理器端点,这对我有用:如果例如返回的最大结果数是100,则在下一个调用中使用offset = 100,这将为您提供从100(偏移量)开始的下100个结果。进行迭代(例如,使用while循环),并将偏移量增加100,直到达到总数或结果(在api中针对totalResults返回)。 我的第一个堆栈溢出帖子,试图尽可能清楚地回答

答案 4 :(得分:0)

def getNearbyVenues(neighborhoods, latitudes, longitudes, radius=500,ven_num=300):
 
    venues_list=[]
    for name, lat, lng in zip(neighborhoods, latitudes, longitudes):
        i=0
        while (i < ven_num+50):
            
        
            url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&offset={}&limit={}'.format(
            CLIENT_ID, 
            CLIENT_SECRET, 
            VERSION, 
            lat, 
            lng, 
            radius,
            i,
            LIMIT)
            
        # make the GET request
            results = requests.get(url).json()['response']['groups'][0]['items']
        
        # return only relevant information for each nearby venue
            venues_list.append([(
            name, 
            lat, 
            lng, 
            v['venue']['name'], 
            v['venue']['location']['lat'], 
            v['venue']['location']['lng'],  
            v['venue']['categories'][0]['name']) for v in results])
            i=i+50
            

    nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
    nearby_venues.columns = ['Neighborhood', 
                  'Neighborhood Latitude', 
                  'Neighborhood Longitude', 
                  'Venue', 
                  'Venue Latitude', 
                  'Venue Longitude', 
                  'Venue Category']
    print('Ok')
    return(nearby_venues)

上面的代码非常适合我,其中ven_num变量是在特定社区中呼叫场所所需的限制