Próbuję przekonwertować fragment tekstu HTML z BeautifulSoup. Oto przykład:Renderowany HTML do zwykłego tekstu za pomocą Pythona
<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>
Próbowałem robić coś takiego:
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)
... ale w ten sposób mój żywioł rozpiętość jest zawsze w nowej linii. Jest to oczywiście prosty przykład. Czy istnieje sposób na uzyskanie tekstu na stronie HTML w taki sposób, w jaki będzie renderowany w przeglądarce (bez wymaganych reguł css, po prostu w sposób normalny renderowane elementy div, span, li itp.) W Pythonie?
mogę używać html2text w zbiegu z BeautifulSoup. Na przykład analizuję fragment html, który mnie interesuje, a następnie przekazuję go do html2text za pomocą pretify()? – btatarov
Tak, html2text może przetwarzać HTML w porcjach, wywołując 'HTML2Text.feed (chunk)' na każdej kolejnej porcji, a następnie wywołując 'HTML2Text.close()', aby uzyskać wynik tekstowy (podobny do ['HTMLParser.feed()' ] (http://docs.python.org/2/library/htmlparser.html#HTMLParser.HTMLParser.feed)). – del
Ta odpowiedź sprawiła, że byłem szczęśliwy i smutny w tym samym czasie. RIP Aaron Swartz. –