2017-04-27 8 views
0

Ich habe über einige interessante Daten innerhalb dieses Tags liegt etwas Screen Scraping versucht, und ich kam:Wie analysieren ld + json python mit

<script type="application/ld+json"> 

ich in der Lage gewesen sind, dass Tag mit schönen Suppe zu isolieren

html = urlopen(url) 
soup = BeautifulSoup(html, "lxml") 

p = soup.find('script', {'type':'application/ld+json'}) 
print p 

aber ich war nicht in der Lage, mit den Daten zu arbeiten oder Daten von diesem Tag zu extrahieren.

Wenn ich versuche, Regex zu verwenden, um einige Sachen aus ihm heraus zu bekommen, erhalte ich:

TypeError: expected string or buffer 

Wie kann ich die Daten von diesem Script-Tag bekommen und es verwenden, wie ich ein Wörterbuch oder eine Zeichenfolge verwenden würde, ? Ich benutze Python 2.7 übrigens.

Antwort

0

sollten Sie die HTML lesen

html = urlopen(url).read() 
soup = BeautifulSoup(html, "html.parser") 
p = soup.find('script', {'type':'application/ld+json'}) 
print p.contents 
+0

Ich erhalte eine Fehlermeldung, dass aus dem "html/lesen()") Es sagt dies: Traceback (jüngste Aufforderung zuletzt): File "test.py", Zeile 20, in get_price() Datei "test.py", Zeile 16, in get_price supple = BeautifulSoup (html, "html.read()") Datei "C: \ PYTHON27 \ lib \ Site-Pakete \ bs4 \ __ init__.py", Zeile 165, in __init__ % ",". Join (features)) bs4.FeatureNotFound: Es wurde kein Tree Builder mit den von Ihnen angeforderten Features gefunden: html.read(). Müssen Sie eine Parser-Bibliothek installieren? – wessells

+0

sein html.parser nicht html.read() mein Fehler –

+0

wenn Sie brauchen, können Sie stattdessen lxml –

0

Die obigen Ausführungen parsen nicht helfen (dank obwohl)

Am Ende habe ich verwendet:

p = str(soup.find('script', {'type':'application/ld+json'})) 

ich gezwungen, in eine Saite, die nicht wirklich hübsch ist, aber sie hat ihren Zweck erfüllt. Ich weiß, dass es wahrscheinlich einen besseren Weg gibt, aber das hat für mich funktioniert.