2016-04-09 2 views
0

Wie reiche ich eine Anfrage an dieser API: http://www.omdbapi.com/Wie fordern Sie die IMDB-API in Python an?

ich eine Tabelle mit Daten aus IMDB zu konstruieren versuchen, wie Titel, Jahr, Budget, Kasse und Genre. Wie bekomme ich diese Informationen mithilfe der API in Python? Ich nehme an, dass die Daten JSON sein werden, wie kann ich es analysieren, um dann unsere Informationen zu ziehen?

Antwort

1

Ich habe erfolgreich Flask für genau diese Sache mehrmals verwendet. Die Verwendung eines Frameworks macht es einfach, da alle Tools bereits zusammengestellt sind. Sie können more about Flask here.

jedoch lesen, wenn Sie bequem mit einem mehr manuellen Ansatz sind, können Sie den Python json und requests Modul verwenden zusammen mit absolut kein Problem, eine RESTful API zuzugreifen.

import json, requests 

url = 'http://example.com/endpoint/' 

parameters = dict(
    field1='some value', 
    field2='another value', 
    field3='yet another value', 
) 

resp = requests.get(url=url, params=parameters) 
data = json.loads(resp.text) 
print data 

EDIT:

Ein Beispiel könnte wie folgt aussehen Ich erkannte

Bei genauerer Betrachtung dieses Problem nur, dass die IMDB API raubend ist noch einfacher, als ich dachte, Sie senden Sie einfach eine GET-Anfrage mit den Parametern, an denen Sie interessiert sind. Ein tatsächliches Arbeitsbeispiel der Kommunikation mit diesem, um Informationen über den Film "Scream" zu erhalten, ist wie folgt:

import json, requests 
url = "http://www.omdbapi.com/?t=scream" 
response = requests.get(url) 
python_dictionary_values = json.loads(response.text) 

Die letzte Zeile übernimmt die in der Antwort zurückgegebene json und konvertiert sie in ein Python-Wörterbuch, das Sie dann frei verwenden können.

Wenn Sie dies mehrmals mit Eingaben aus einer Datei tun möchten, können Sie dies tun. In meinem Beispiel wird davon ausgegangen, dass Sie eine durch Zeilentrenner getrennte Datei haben und alle Filme, nach denen Sie suchen, keine Leerzeichen haben (wenn Sie Leerzeichen verarbeiten müssen, müssen Sie sie in der URL korrekt codieren).

movies = {} 
import json, requests 
baseurl = "http://omdbapi.com/?t=" #only submitting the title parameter 
with open("movies.txt", "r") as fin: 
    for line in fin: 
     movieTitle = line.rstrip("\n") # get rid of newline characters 
     response = requests.get(url + movieTitle) 
     if response.status_code == 200: 
       movies[movieTitle] = json.loads(response.text) 
     else: 
       raise ValueError("Bad request!") 
print movies['scream'] 
+0

Danke! Wenn ich mehrere Anfragen machen möchte, gibt es eine Möglichkeit, dies ohne manuelle Eingabe zu tun? Zum Beispiel habe ich eine Textdatei mit einer Liste von Filmnamen. Kann ich etwas damit machen, wie würde ich eine Schleife machen, die das durchläuft und die Anfragen einreicht? Oder gibt es eine Möglichkeit, eine Anfrage zu stellen, aber alle gewünschten Filmtitel haben? Als ich versuchte, durch Kommas zu trennen, gab es einen Fehler, ich nehme an, es ist, weil das Komma nicht als Trennzeichen erkannt wird – Chumbawoo

+0

@Chumbawoo Meine Antwort aktualisiert, um zu zeigen, wie Sie es mit einer einfachen Textdatei machen können. Wenn Sie mehrere Felder haben möchten, sollten Sie sich wahrscheinlich mit einem CSV-Reader-Modul oder der Python 'str.split()' Methode beschäftigen. Hoffe das hilft! –

+0

Danke, das hat wirklich geholfen! Weißt du, wie ich dann diese JSON-Daten nehmen und in eine Tabelle schreiben kann? – Chumbawoo

Verwandte Themen