2010-10-06 6 views
7

Ich habe ein einfaches Skript, wo ich eine HTML-Seite abholen, übergebe es an BeautifulSoup, um alle Skript- und Stil-Tags zu entfernen, dann möchte ich das HTML-Ergebnis an eine andere Methode übergeben. Gibt es einen einfachen Weg, dies zu tun? Ich habe die BeautifulSoup.py noch nicht gesehen.Getting HTML von Scripts und Stil-Tags mit BeautifulSoup entfernt?

soup = BeautifulSoup(html) 
for script in soup("script"): 
    soup.script.extract() 

for style in soup("style"): 
    soup.style.extract() 
contents = soup.html.contents 
text = loader.extract_text(contents) 

contents = soup.html.contents bekommt nur eine Liste und alles ist in Klassen definiert. Gibt es eine Methode, die nur das rohe HTML zurückgibt, nachdem Suppe es manipuliert? Oder muss ich nur durch die contents Liste gehen und den HTML-Code wieder zusammenfügen, ausgenommen das Skript & style tags?

Oder gibt es eine noch bessere Lösung, um das zu erreichen, was ich will?

Antwort

8

unicode(soup) gibt Ihnen die HTML.

Auch das, was Sie wollen, ist dies:

for elem in soup.findAll(['script', 'style']): 
    elem.extract() 
+0

Hah. so einfach. Vielen Dank! – Nathan

+0

schöne Sopaa – Yarin