7

Pythonライブラリhtml5libを使用して次のようなものを変換する簡単な方法はありますか?

<p>Hello World. Greetings from <strong>Mars.</strong></p>

Hello World. Greetings from Mars.
4

3 に答える 3

12

パーサー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()")
于 2011-12-31T00:37:05.087 に答える
4

html2textを使用して、プレーンテキスト(マークダウン形式)に変換します。

from html2text import HTML2Text
handler = HTML2Text()

html = """Lorem <i>ipsum</i> dolor sit amet, <b>consectetur adipiscing</b> elit.<br>
          <br><h1>Nullam eget \r\ngravida elit</h1>Integer iaculis elit at risus feugiat:
          <br><br><ul><li>Egestas non quis \r\nlorem.</li><li>Nam id lobortis felis.
          </li><li>Sed tincidunt nulla.</li></ul>
          At massa tempus, quis \r\nvehicula odio laoreet.<br>"""
text = handler.handle(html)

>>> text
u'Lorem _ipsum_ dolor sit amet, **consectetur adipiscing** elit.\n\n  \n\n# Nullam eget gravida elit\n\nInteger iaculis elit at risus feugiat:\n\n  \n\n  * Egestas non quis lorem.\n  * Nam id lobortis felis.\n  * Sed tincidunt nulla.\nAt massa tempus, quis vehicula odio laoreet.\n\n'
于 2013-11-11T10:58:03.307 に答える
1

itertext()メソッドの結果を連結できます。

例:

import html5lib
d = html5lib.parseFragment(
        '<p>Hello World. Greetings from <strong>Mars.</strong></p>')
s = ''.join(d.itertext())
print(s)

出力:

こんにちは世界。火星からのご挨拶。
于 2017-04-19T16:34:06.923 に答える