Ich versuche, ein Stück HTML-Text mit BeautifulSoup zu konvertieren. Hier ein Beispiel:Gerendertes HTML in Klartext mit Python
<div>
<p>
Some text
<span>more text</span>
even more text
</p>
<ul>
<li>list item</li>
<li>yet another list item</li>
</ul>
</div>
<p>Some other text</p>
<ul>
<li>list item</li>
<li>yet another list item</li>
</ul>
Ich habe versucht, etwas zu tun, wie:
def parse_text(contents_string)
Newlines = re.compile(r'[\r\n]\s+')
bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
txt = bs.getText('\n')
return Newlines.sub('\n', txt)
... aber auf diese Weise meines span-Element ist immer auf eine neue Zeile. Dies ist natürlich ein einfaches Beispiel. Gibt es eine Möglichkeit, den Text in der HTML-Seite so zu erhalten, wie er im Browser gerendert wird (keine CSS-Regeln erforderlich, nur die normalen Methoden wie div, span, li, usw.) in Python?
Kann ich html2text in Verbindung mit BeautifulSoup verwenden. Zum Beispiel analysiere ich das Stück HTML, das mich interessiert, und füttere es dann mit pretify() in html2text? – btatarov
Ja, html2text kann HTML in Chunks verarbeiten, indem es 'HTML2Text.feed (chunk)' auf jedem nachfolgenden Chunk aufruft und dann 'HTML2Text.close()' aufruft, um das Textergebnis zu erhalten (ähnlich wie bei '' HTMLParser.feed() ') ] (http://docs.python.org/2/library/htmlparser.html#HTMLParser.HTMLParser.feed)). – del
Diese Antwort hat mich glücklich und traurig zugleich gemacht. RIP Aaron Swartz. –