我想问一下,除了这些选项之外,是否有更有效的方法可以获得超过50个结果?
我正在使用当前的foursquare api进行搜索https://developer.foursquare.com/docs/venues/search。
我想要的是偏移选项,以获得更多结果,但似乎没有这样的选择。
有替代解决方案吗? 先感谢您。
答案 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
第三个请求中的对于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
变量是在特定社区中呼叫场所所需的限制