使用lxml解析html部分模板

时间:2014-01-31 05:12:26

标签: python lxml

我正在尝试使用lxml解析html模板并向html元素添加某些属性。我可以成功地这样做但是在通过

阅读文档时
 template = etree.parse(view, etree.HTMLParser(remove_comments=True))

然后保存文档。我注意到我的模板包含额外的标记,使其成为有效的html模板。包装像

这样的模板
 <div>
   <span> A template </span>
 </div>

使用html和body标签,将其转换为类似

的内容
 <html>
 <body>
 <div>
   <span> A template </span>
 </div>
 </body>
 <html>

如何阅读我的“破碎”字样? html模板并阻止lxml添加这些额外的标签?

1 个答案:

答案 0 :(得分:1)

根本不使用html解析器

使用html解析器:

>>> template = etree.fromstring('<div><span> A template </span></div>', etree.HTMLParser(remove_comments=True))
>>> etree.tostring(template)
'<html><body><div><span> A template </span></div></body></html>'

没有它:

>>> template = etree.fromstring('<div><span> A template </span></div>')
>>> etree.tostring(template)
'<div><span> A template </span></div>'