我想用漂白剂格式化一些可能不干净的HTML。 在以下示例中,理想情况下应去除漂白剂:
<p >
中的多余空格</a attr="test">
中的属性</p >
结束时多余的空格我的代码如下:
import bleach
html = """<p >This <a href="book"> book </a attr="test"> will help you</p >"""
html_cleaned = bleach.clean(html)
# html_cleaned is:
#'<p >This <a href="book"> book </a> will help you</p>'
如您所见,漂白非常不一致:
p
标记的<和>被转义为<
和>
。对于链接标记,这不会发生</p >
中的空格已删除,开头<p >
中的空格未删除p
标签</p attr="test">
中,则不会删除该属性,而对于结束</a attr="test">
,则删除了非法属性。这是怎么回事?
答案 0 :(得分:2)
bleach.clean
需要一个可选的tags
参数,该参数指定允许的标签。
默认情况下,p
标签是不允许的,因此不会得到消毒处理。
我的问题可以通过以下方法解决:
cleaned_doc = bleach.clean(input_doc, tags = bleach.sanitizer.ALLOWED_TAGS+["p"])