如何从Yelp API请求20多个结果?

时间:2016-02-20 16:38:35

标签: python api yelp

我想从Yelp获得多伦多餐厅的完整列表。这是我的Python代码:

import urllib2
import rauth

params="term=restaurants&location=Toronto&limit=20&cc=CA"
consumer_key = "***"
consumer_secret = "***"
token = "***"
token_secret = "***"
session = rauth.OAuth1Session(
consumer_key = consumer_key
,consumer_secret = consumer_secret
,access_token = token
,access_token_secret = token_secret)

request = session.get("http://api.yelp.com/v2/search",params=params)


data = request.json()

问题是Yelp只能返回20个结果。有没有办法检索超过20个结果?

3 个答案:

答案 0 :(得分:1)

您可以通过添加参数'limit': 50将限制增加到50。此外,您可以使用offset参数遍历记录。您总共可以获取1000条记录。看起来像这样:

def get_businesses(location, term, api_key):
    headers = {'Authorization': 'Bearer %s' % api_key}
    url = 'https://api.yelp.com/v3/businesses/search'

    data = []
    for offset in range(0, 1000, 50):
        params = {
            'limit': 50, 
            'location': location.replace(' ', '+'),
            'term': term.replace(' ', '+'),
            'offset': offset
        }

        response = requests.get(url, headers=headers, params=params)
        if response.status_code == 200:
            data += response.json()['businesses']
        elif response.status_code == 400:
            print('400 Bad Request')
            break

    return data

答案 1 :(得分:0)

请尝试将排序设置为0,它最多返回1000.否则,您应该使用offest参数来获取20乘20的数据

答案 2 :(得分:0)

Yelp的API最多只返回20个结果。你没有做错任何事,他们只是把它限制在20。

使用Google Places API获取超过20个结果

然而,似乎有办法获得最多60个结果。