【问题标题】:Foursquare Venue API & Number of Results, in a more efficient way?Foursquare 场地 API 和结果数量,以更有效的方式?
【发布时间】:2012-01-21 13:04:38
【问题描述】:

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

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

我想要一个类似偏移选项的东西,以获得更多的结果,但似乎没有这样的选项。

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

【问题讨论】:

    标签: api pagination offset foursquare


    【解决方案1】:

    您应该使用带有偏移和限制作为参数的场所探索, 场所探索为您提供总结果,您可以使用此响应来计算分页所需的页数

    例如假设 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】:

      这里实际上没有提到另一个选项(虽然不是分页)

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

      您可以使用不同的类别 ID 多次搜索单个点 (ll),从而获得许多结果(一些重复的场所可以有多个类别)。

      因此,您可以在同一个地方搜索“美食”场所和“夜生活”场所,在 50 个展位中获得 100 个结果。据说这是 100 个结果,但不是唯一的结果,可能是重复的。我认为这比尝试使用浏览半径更有效。

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

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

      【讨论】:

      • 刚刚遇到这个旧线程。我的想法:使用上面的 categoryid,但不使用 lat/lng 点,而是使用 se(south-east) 和 nw(north-west) 参数来定义边界框。与重叠的纬度/经度调用相比,它可以让您更好地覆盖给定区域。从一些合理的小边界框开始,大多数搜索不会返回 50 个结果。 (最大值,表示可能有更多)。对于确实返回 50 个结果的那些,将边界框分成 4 份,然后冲洗并重复。
      • 如果您呈现一个带半径的 lat lng,则将意图用作浏览会产生类似的结果。
      【解决方案3】:

      不怕。目前没有分页,为了找到更多的场所,您需要移动您的搜索区域,如您突出显示的答案。我同意,不过分页会很方便!

      【讨论】:

      • 是的,它会很好,我想我会尝试移动搜索区域和更改 categoryId 的组合..
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:
        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 变量是调用某个社区的场所所需的限制

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多