Holen Sie Json Daten über URL und verwenden Sie in Python (Simplejson)
Ich denke, das muss eine einfache Antwort, aber ich bin kämpfen: ich möchte eine url (die Ausgänge json) und bekomme die Daten in einem brauchbaren Wörterbuch in python. Ich bin stecken geblieben auf dem letzten Schritt.
>>> import urllib2
>>> import simplejson
>>> req = urllib2.Request("http://vimeo.com/api/v2/video/38356.json", None, {'user-agent':'syncstream/vimeo'})
>>> opener = urllib2.build_opener()
>>> f = opener.open(req)
>>> f.read() # this works
'[{"id":"38356","title":"Forgetfulness - Billy Collins Animated Poetry","description":"US Poet Laureate Billy Collins reads his poem ","url":"http:\\/\\/vimeo.com\\/38356","upload_date":"2006-01-24 15:21:03","thumbnail_small":"http:\\/\\/80.media.vimeo.com\\/d1\\/5\\/47\\/74\\/thumbnail-4774968.jpg","thumbnail_medium":"http:\\/\\/80.media.vimeo.com\\/d1\\/5\\/46\\/85\\/thumbnail-4685118.jpg","thumbnail_large":"http:\\/\\/images.vimeo.com\\/87\\/39\\/873998\\/873998_640x480.jpg","user_name":"smjwt","user_url":"http:\\/\\/vimeo.com\\/smjwt","user_portrait_small":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.30.jpg","user_portrait_medium":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.75.jpg","user_portrait_large":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.100.jpg","user_portrait_huge":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.300.jpg","stats_number_of_likes":"281","stats_number_of_plays":"9173","stats_number_of_comments":23,"duration":"112","width":"320","height":"240","tags":"poetry, poet, online poetry, famous poet, video poetry, modern poetry, famous poem, poetry sites, poetry websites, audio poetry, american poet, animation clips, american poetry, free poetry sites, animation art, free poetry, animated clips, poem, poet laureate"}]'
>>> simplejson.load(f)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/__init__.py", line 298, in load
parse_constant=parse_constant, **kw)
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/decoder.py", line 326, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/decoder.py", line 344, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Irgendwelche Ideen, wo ich bin mache ich falsch?
InformationsquelleAutor der Frage thornomad | 2009-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
laufen, ohne f.read() zuerst. Wenn Sie laufen f.read(), das filehandle Inhalt schlürfte es gibt also nichts übrig, wenn Ihr Anruf
simplejson.load(f)
InformationsquelleAutor der Antwort unutbu
Die erste Zeile liest die gesamte Datei. In der zweiten Zeile dann versucht, um mehr zu Lesen aus der Datei, aber es gibt nichts Links:
Entweder einfach weglassen.f.read () - Zeile, oder speichern Sie den Wert aus Lesen, und verwenden Sie es im laden:
InformationsquelleAutor der Antwort Ned Batchelder
Es gibt sogar einen noch einfacheren Weg - Sie brauchen nicht simplejson überhaupt. Python Parsen von json in ein dict/array mit der eval-Anweisung, solange du true/false/null auf die richtigen Werte.
InformationsquelleAutor der Antwort Paul Sutter