我想使用漂白剂来格式化一些可能不干净的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">
,则将删除非法属性。这是怎么回事?
最佳答案
bleach.clean
需要一个可选的tags
参数,该参数指定允许的标签。
默认情况下不允许使用p
标记,因此不会进行消毒处理。
我的问题可以通过以下方法解决:
cleaned_doc = bleach.clean(input_doc, tags = bleach.sanitizer.ALLOWED_TAGS+["p"])
关于python - python bleach:不一致的清洁行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54354764/