2015-11-14 3 views
6

Вдохновленный this Yelp tutorial, я создал сценарий для поиска всех спортивных залов в данном городе. Я изменил сценарий с these updates, чтобы вернуть ВСЕ спортивные залы, а не только первые 20. Вы можете найти суть here. SEARCH_LIMIT равен 20.Плохой запрос от API Yelp

Я столкнулся с ошибкой ошибочного запроса. Я внимательно следил за учебником Yelp Tutorial и не уверен, что он может исходить - я уверен, что запрос правильно закодирован, и все мои ключи 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 

ответ

1

В примере поиск PARAMS они заменяют пробела с + знаком:

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

В вашей сути вы жёстко местоположения как: 'New York, NY', изменение пространства в + должен помочь.

+0

Что-то ничего не меняет – NumenorForLife

1

У Yelp API есть ограничения. Вы можете получить максимум 20 предметов для каждого запроса. Кроме того, количество доступных предметов - 1000. Я не могу найти информацию об ограничениях на documentation. Но я нашел информацию об этих ограничениях на support group. Исходя из этого, вы можете получить максимум 1000 наименований для 50 запросов ([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.

+0

Как бы вы порекомендовали его установить? – NumenorForLife

+0

Что вы думаете о сторонниках. Я думаю, они могут вам помочь. –

+0

Я не понимаю – NumenorForLife

Смежные вопросы