【问题标题】:Bad Request from Yelp API来自 Yelp API 的错误请求
【发布时间】:2016-02-16 06:06:59
【问题描述】:

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

【问题讨论】:

    标签: python api httprequest http-error yelp


    【解决方案1】:

    在示例搜索参数中,它们将空格替换为 + 符号:

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

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

    【讨论】:

    • 这不会改变任何事情
    【解决方案2】:

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

    关于您的 sn-p,您正在尝试获得 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

    【讨论】:

    • 那你建议如何修复它?
    • 你如何看待支持者。我认为他们可以帮助您。
    • 我的意思是support group。这是 Yelp API 的官方支持组。
    • 我可以去那里,但希望在这里解决。我明天复制帖子。
    • @jsc123 It is 非常老的问题,但它仍然有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多