2017-08-10 5 views
-1

Ich habe eine API, die mehrere Seiten haben, so dass ich alle Seiten durchlaufen muss, um alles zu bekommen. Ich bin mir jedoch nicht sicher, wie ich das richtig machen soll. Ich habe den Code unten geschrieben, aber es gibt mir einen Fehler: SyntaxError: 'Rückkehr' außerhalb der Funktion.Wie bekomme ich alle Seiten von API - Python?

import requests 

def get_json(url): 
    response = requests.get(url) 
    return response.json() 

def my_range(start, end, step): 
    while start <= end: 
     yield start 
     start += step 

for pageNumber in my_range(1, 3, 1): 
    return 

data_json = get_json('https://www.eventbriteapi.com/v3/events/search/?token=MYAPIKEY&expand=venue&location.latitude=55.676097&location.longitude=12.568337&location.within=5km&page='+pageNumber) 

eventbrite = data["events"] 
+2

Es heißt, Sie haben eine 'return' Anweisung außerhalb einer Funktion. Nach Ihrer 'for pageNumber in ...' for Schleife haben Sie eine einzelne 'return' für sich - was wollen Sie hier machen? –

Antwort

1

Im angegebenen Code ist ein Konstruktionsfehler enthalten. In den ersten beiden def: s definieren Sie zwei Funktionen ohne Probleme, aber dann nehme ich es Ihnen die Haupt gerade schreiben, ohne

erklärt
def main(): 

und ruft main() danach. Der Fehler ergibt sich aus der "Rückkehr" an einem lustigen Ort.

+1

Ja, das würde den 'SyntaxError' beheben, aber der Code wird nicht richtig funktionieren. Eine Lösung wäre, die Anweisung "return" zu entfernen und die folgenden Zeilen einzurücken. Dies führt jedoch zu einem "TypeError", wenn das op versucht, "str + int" zu verketten, aber das kann leicht behoben werden –

1

Da Sie die requests Bibliothek verwenden, würde ich einen Blick auf die params Dokumentation werfen. Dies hilft Ihnen dabei, die manuelle Injektion zu umgehen, die Sie ausführen, wenn Sie get_json() anrufen. Wenn Sie wissen, wie viele Seiten Sie haben, können Sie jede Seite durchlaufen und für jede Seite einen Netzwerkanruf tätigen. Wenn Sie 10 Seiten haben, werden Sie am Ende 10 Netzwerkanrufe tätigen.

Dies setzt natürlich voraus, dass Sie haben jedem Endpunkt Paginieren

Verwandte Themen