2016-03-29 3 views
0

Alle,Nach URL als json Parsen kann nicht ein bestimmtes Element aus Listen- nur ganze Liste zurück

ich den folgenden Code geschrieben:

import requests,bs4 
res=requests.get('http://itunes.apple.com/lookup?id=551798799') 
res.raise_for_status() 
wwe=bs4.BeautifulSoup(res.text) 
print wwe.select('p averageUserRating') 

Wenn ich nur tun: print wwe.select ('p') dann funktioniert der Code, aber es druckt alles in der Liste. Wenn ich jedoch den Inhalt der obigen Ausgabe drucke, wird ein Fehler ausgegeben, der besagt, dass der Selektor nicht unterstützt wird.

Ich versuche im Grunde nur, den durchschnittlichen UserRating-Wert (der 4.0 ist) zurückzugeben. Danke für die Hilfe!

+0

Diese Datei ist JSON, nicht HTML, also würde BeautifulSoup nicht funktionieren. –

Antwort

1

Der Inhalt dieser Datei ist kein HTML, was BeautifulSoup zum Lesen bestimmt ist; Es ist ein anderes Datenformat namens JSON. Glücklicherweise macht die requests Bibliothek es wirklich einfach, JSON zu parsen - wenn Sie .json() für eine Antwort aufrufen, parst es es in ein Wörterbuch. Sie müssen averageUserRating zugreifen, die innerhalb des ersten Elements der results Liste ist, so können Sie diese verwenden, um Zugriff auf was Sie brauchen:

>>> data = res.json() 
>>> data["results"][0]["averageUserRating"] 
4.0 

Ihre vorhandenen Code zu ändern:

import requests 
res=requests.get('http://itunes.apple.com/lookup?id=551798799') 
res.raise_for_status() 
wwe=res.json() 
print data["results"][0]["averageUserRating"] 
Verwandte Themen