我正在尝试使用lxml.html来编写要删除的清理例程 没有内容的空DIV元素。在调试过程中,我注意到了 标准的tostring() - > fromstring()迭代修改我的HTML。 首先,它删除了外部身体标签,然后它改变了DIV结构。
为什么?
(Pdb) from lxml.html import fromstring, tostring
(Pdb) print html
<body>
<div></div>
<p>hello world</p>
<div> </div>
<p><div> </div></p>
</body>
(Pdb) print tostring(fromstring(html))
<div>
<div></div>
<p>hello world</p>
<div> </div>
<p></p><div> </div>
</div>
答案 0 :(得分:3)
这是对的。虽然您的示例格式正确,但它不是有效的html,因此lxml会尽力纠正它。特别是div元素不能嵌套在p元素中,并且根标记不能是body。请改用etree模块:
from lxml.etree import fromstring, tostring