【发布时间】:2016-03-15 06:23:38
【问题描述】:
鉴于以下代码,人们可能会合理地期望输入 lxml 的 HTML 字符串几乎完全相同。
from lxml import html
HTML_TEST_STRING = r"""
<pre>
<em>abc</em>
<em>def</em>
<sub>ghi</sub>
<sub>jkl</sub>
<em>mno</em>
<em>pqr</em>
</pre>
"""
parser = html.HTMLParser( remove_blank_text=False )
doc = html.fromstring( HTML_TEST_STRING, parser=parser )
print( html_out_string )
相反,即使所有内容都包含在 <pre> 预格式化的代码块中,并且 remove_blank_text 标志设置为 False,它只尊重 某些 的内容,但神秘地不 用于内容的其他部分。请参阅下面的上述代码的意外输出:
<pre>
<em>abc</em>
<em>def</em>
<sub>ghi</sub><sub>jkl</sub><em>mno</em>
<em>pqr</em>
</pre>
具体来说,每当 lxml 遇到 <sub> 标记时,它就会变得笨拙并丢失 sub 元素后面的“尾部”文本内容(即使那个“sub element”可以说甚至不是一个元素——因为它被包裹在一个pre元素中)。
【问题讨论】: