Hallo,
ich brauch mal kurz nen Tritt in die richtige Richtung: Ich will mit BeautifulSoup die Tags aus einem HTML-Dokument filtern und mir nur den Text ausgeben lassen...habe da bisher nur eine rekursive Lösung gefunden, die über die einzelnen Tags iteriert (rekursiert?), was ich aber nicht grade elegant finde...
Oder brauche ich dazu ein anderes Modul?
Html-Tags entfernen mit BeautifulSoup
Eine rekursive Datenstruktur mit rekursiven Funktionen zu bearbeiten ist IMHO nicht unelegant. Es gibt zwar einen einfacheren Weg, aber der versteckt die rekursiven Funktionen letztendlich nur.
Code: Alles auswählen
from BeautifulSoup import BeautifulSoup
def main():
html_file = open('test.html')
source = html_file.read()
html_file.close()
soup = BeautifulSoup(source, convertEntities=BeautifulSoup.HTML_ENTITIES)
text = ''.join(soup.body(text=True))
print text
-
- User
- Beiträge: 28
- Registriert: Dienstag 18. September 2007, 14:59
alles klar, vielen lieben dank!
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Ansonsten werfe ich mal html5lib in den Raum. Die gefällt mir mittlerweile wesentlich besser als BeautifulSoup. Vor allem weil sie etrees ausgeben kann.
TUFKAB – the user formerly known as blackbird
-
- User
- Beiträge: 28
- Registriert: Dienstag 18. September 2007, 14:59
was mir grade auch nicht so gefällt:
ich will die html-kommentare entfernen, dafür gibts extra eine anleitung in der beautifulsoup-doku. aus:
ich will die html-kommentare entfernen, dafür gibts extra eine anleitung in der beautifulsoup-doku. aus:
wird</div>
<script type="text/javascript">
<!--
spFramebuster();
// -->
</script> <script type="text/javascript">
<!--
OAS_RICH('x70');
// -->
</script><br class="spBreakNoHeight" clear="all" /> <!-- ##SPONTAG: LAYER## -->
<!-- Vignette StoryServer 5.0 Wed Nov 14 10:58:52 2007 -->
</body>
</html>
und nach entfernen der tags</div>
<script type="text/javascript">
<!--
spFramebuster();
// -->
</script> <script type="text/javascript">
<!--
OAS_RICH('x70');
// -->
</script><br class="spBreakNoHeight" clear="all" />
</body>
</html>
was natürlich nicht grade schön ist...<!--
spFramebuster();
// -->
<!--
OAS_RICH('x70');
// -->