来自Yelp API的错误请求

时间:2015-11-14 21:09:51

标签: python api httprequest http-error yelp

this Yelp tutorial的启发,我创建了一个脚本来搜索特定城市中的所有健身房。我用these updates调整了脚本,以便返回所有健身房,而不仅仅是前20个。你可以找到要点here。 SEARCH_LIMIT是20。

我遇到错误请求错误。我非常密切地关注了Yelp教程,并且不确定它的来源是什么 - 我非常确定请求是否已正确编码,并且我的所有API密钥都是正确的。

打印输出如下:

Traceback (most recent call last):
  File "YelpSearch.py", line 97, in <module>
    query_api()
  File "YelpSearch.py", line 74, in query_api
    response = search_yelp(offset) 
  File "YelpSearch.py", line 67, in search_yelp
    return request(API_HOST, SEARCH_PATH, url_params=url_params)
  File "YelpSearch.py", line 53, in request
    conn = urllib2.urlopen(signed_url, None)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request

2 个答案:

答案 0 :(得分:1)

在示例搜索参数中,他们用+符号替换空格:

'term': term.replace(' ', '+'),
'location': location.replace(' ', '+'),

在您的要点中,您将位置硬编码为:'New York, NY',将空格更改为+应该有所帮助。

答案 1 :(得分:1)

Yelp API有局限性。每个请求最多可以获得20个项目。此外,可访问项目的数量为1000.我无法找到有关documentation限制的信息。但是,我在support group上找到了有关这些限制的信息。基于此,您可以为50个请求获得最多1000个项目([1,...,20],[21,...,40],... [981,...,1000])

关于你的代码片段,你正在尝试获得超过1000个项目。我发现你的限制和偏移参数。 limit = 3, offset = 1000。这意味着您希望从1001到1003获取项目。这与文档相矛盾。

HTTP Error 400: Bad Request表示您得到回复

{
  error: {
    field: "offset",
    description: "The maximum number of accessible results is 1000",
    id: "INVALID_PARAMETER",
    text: "One or more parameters are invalid in request"
  }
}

如果您在浏览器上打开上一个signed_url,您会看到上面的响应。此外,您会看到响应状态代码为400 Bad Request

相关问题