我正在使用html5lib验证来自用户的自定义HTML。问题是html5lib添加了html
、head
和body
标记,这是我不需要的。在
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("simpleTree"))
f = open('/home/user/ex.html')
doc = parser.parse(f)
doc.toxml()
'<html><head/><body><div>\n <a href="http://speedhunters.com">speedhunters.com\n</a></div><a href="http://speedhunters.com">\n</a></body></html>'
这是经过验证的,可以进行清理,但是如何删除或阻止将这些标记添加到树中?
我的意思是排除使用replace
。在
哇,html5lib有可怕的文档。在
查看源代码,并处理一个快速测试用例,这似乎是可行的:
它有点老套,但比
replace()
要小。在如果您正在处理“不常见”的html,lxml可能是一个更好的选择。在
似乎我们可以使用
Tag
s的hidden
属性,以防止在将标记/soup转换为string/unicode时标记本身被“导出”:本质上,发问者的目标是获得
^{pr2}$body
标记的全部内容,而不使用<body>
包装本身。这是有效的:我是通过BeautifulSoup的资料找到的。在调用
soup = BeautifulSoup(html)
之后,根标记的内部名称为“[document]”。默认情况下,只有根标记有hidden==True
。这可以防止其名称在任何HTML输出中结束。在相关问题 更多 >
编程相关推荐