С lxml
в качестве бэкэнда синтаксического анализатора:
import html5lib
body = "<p>Hello World. Greetings from <strong>Mars.</strong></p>"
doc = html5lib.parse(body, treebuilder="lxml")
print doc.text_content()
Если честно, это фактически обман, поскольку он эквивалентен следующему (изменены только соответствующие части):
from lxml import html
doc = html.fromstring(body)
print doc.text_content()
Если вам действительно нужен механизм разбора html5lib
:
from lxml.html import html5parser
doc = html5parser.fromstring(body)
print doc.xpath("string()")