Ich versuche, eine Reihe von Webseiten mit Text, Tabellen und HTML zu analysieren. Jede Seite hat eine andere Anzahl von Absätzen, aber während jeder Absatz mit einer Öffnung <div>
beginnt, tritt der Abschluss </div>
nicht bis zum Ende auf. Ich versuche nur, um den Inhalt zu bekommen, bestimmte Elemente herausgefiltert werden und ersetzt sie durch etwas anderesParsing geschachtelte Divs mit BeautifulSoup
Wunschergebnis: text1 <b>text2</b> (table_deleted) text3
Tatsächliches Ergebnis text1\n\ntext2some text heretext 3text2some text heretext 3 (table deleted)
from bs4 import BeautifulSoup
html = """
<h1>title</h1>
<h3>extra data</h3>
<div>
text1
<div>
<b>next2</b><table>some text here</table>text 3
</div>
</div>"""
soup = BeautifulSoup(html, 'html5lib')
tags = soup.find('h3').find_all_next()
contents = ""
for tag in tags:
if tag.name == 'table':
contents += " (table deleted) "
contents += tag.text.strip()
print(contents)
warum Sie nicht nur die Tabelle Tag finden und ändern, dass ersetzen, warum die parsen Vorfahren? – putonspectacles
huh. Ich schätze, ich mag es, Dinge für mich schwierig zu machen. Das funktioniert tatsächlich. :) – bluppfisk