我需要整理HTML页面,并用Python将它们转换成XML;如果需要,我需要丢失一些“坏”部分。
我使用了TagSoup一段时间,但是它不理解新的“文章”、“页脚”标记,并且不喜欢"meta“(当它们不在头上时);这使得生成的XML几乎无法处理。
我喜欢html5lib到目前为止所做的事情,但是我的第五个测试(非常奇怪的测试)失败了;当解析时
<div attr="val"">使用html5lib + xml.dom树构建器,我在生成的XML字符串中获得了以下内容:
<div attr="val" "="">这对于格式良好的xml来说不是一个很好的结果。
当我尝试html5lib + lxml作为树构建器时,我将其转换为
<div attr="val" U00022="">这样做更好,但问题是lxml“吃”了<link>标记的结束标记/斜线,使得它们在输出<link>标记时只使用<link ... >。
您推荐使用什么?
发布于 2014-11-03 15:35:53
可以使用method将元素设置为自关闭或不关闭,如下所示:
from lxml import etree
tree = etree.Element('div', attrib={'attr':'val', 'U00022':''})
etree.tostring(tree)
'<div U00022="" attr="val"/>'
# parse as self-closing tag
etree.tostring(tree, method='xml')
'<div U00022="" attr="val"/>'
# parse as normal HTML
etree.tostring(tree, method='html')
'<div U00022="" attr="val"></div>'那就随心所欲吧。当您尝试从元素编写时,也可以添加method:
tree = html5lib.parse('<div attr="val" U00022="">', treebuilder='lxml', namespaceHTMLElements=False)
tree.write('yourfilename', method='html')打印:
<html><head></head><body><div u00022="" attr="val"></div></body></html>https://stackoverflow.com/questions/26717379
复制相似问题