2015-11-14 10 views
6

Ispirato allo this Yelp tutorial, ho creato uno script per cercare tutte le palestre di una determinata città. Ho modificato la sceneggiatura con these updates per restituire TUTTE le palestre, non solo le prime 20. Puoi trovare l'essenza here. SEARCH_LIMIT è 20.Richiesta non valida dall'API di Yelp

Sto riscontrando un errore di richiesta non valida. Ho seguito il Tutorial di Yelp abbastanza da vicino e non sono sicuro di cosa possa provenire - Sono abbastanza sicuro che la richiesta sia correttamente codificata e tutte le mie chiavi API siano corrette.

La stampa è qui sotto:

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 

risposta

1

nell'esempio params di ricerca che vanno a sostituire gli spazi con + segno:

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

Nella tua essenza si è hardcoded località come: 'New York, NY', cambiando gli spazi per + dovrebbe aiutare.

+0

Questo non cambia nulla – NumenorForLife

1

L'API di Yelp presenta limitazioni. Puoi ottenere massimo 20 articoli per ogni richiesta. Inoltre, la quantità di articoli accessibili è 1000. Non riesco a trovare informazioni sulle limitazioni su documentation. Ma ho trovato informazioni su queste limitazioni su support group. Sulla base di questo puoi ottenere un massimo di 1000 articoli per 50 richieste ([1, ..., 20], [21, ..., 40], ... [981, ..., 1000])

Per quanto riguarda il frammento di codice che stai cercando, ottieni più di 1000 articoli. Ho scoperto che i tuoi parametri limite e offset. limit = 3, offset = 1000. Significa che vuoi ottenere articoli da 1001 a 1003. E contraddice la documentazione.

HTTP Error 400: Bad Request significa che si ottiene risposta

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

Se si apre l'ultima signed_url sul browser si vedrà la risposta come sopra. Inoltre, vedrai che il codice di stato della risposta è 400 Bad Request.

+0

Come consiglieresti di aggiustarlo? – NumenorForLife

+0

Cosa ne pensi dei sostenitori. Penso che possano aiutarti. –

+0

Non capisco – NumenorForLife

Problemi correlati