我正在使用Python中的lxml库来清除html页面中可能有害的代码/我不想要的部分。我注意到函数中有一个奇怪的行为:当给定一个空的<li>
节点时,它会删除结束</li>
标记,但不会删除开始标记。
例如,
from lxml.html.clean import Cleaner
text = '<ul><li></li><li>FooBar</li></ul>'
cleaner = Cleaner()
print cleaner.clean_html(text)
将输出<ul><li><li>FooBar</li></ul>
...
据我所知,只有在处理<li>
标记时才会发生这种情况。这是来自lxml库的bug吗?我做错了什么吗?
任何洞察力都将不胜感激。谢谢!
发布于 2013-05-24 13:28:34
您可以通过将结束标记打印为XML来强制结束标记:
from lxml.html.clean import Cleaner
import lxml.html as LH
text = '<ul><li></li><li>FooBar</li></ul>'
cleaner = Cleaner()
root = LH.fromstring(cleaner.clean_html(text, ))
print(LH.tostring(root, method='xml'))
收益率
<ul><li/><li>FooBar</li></ul>
https://stackoverflow.com/questions/16735516
复制