fromstring() - > tostring()修改整个HTML结构

时间:2011-08-23 16:08:40

标签: python html lxml

我正在尝试使用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>

1 个答案:

答案 0 :(得分:3)

这是对的。虽然您的示例格式正确,但它不是有效的html,因此lxml会尽力纠正它。特别是div元素不能嵌套在p元素中,并且根标记不能是body。请改用etree模块:

from lxml.etree import fromstring, tostring