python 漂白剂:清洁行为不一致
python bleach: inconsistent cleaning behaviour
我想用漂白剂格式化一些可能不干净的东西 HTML。
在以下示例中,理想情况下应去除漂白剂:
- 第一个开头的多余空格
<p >
- 结束 link 标签中的属性
</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
标签的 < 和 > 转义为 <
和 >
。对于 link 标签,这不会发生
</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"])
我想用漂白剂格式化一些可能不干净的东西 HTML。 在以下示例中,理想情况下应去除漂白剂:
- 第一个开头的多余空格
<p >
- 结束 link 标签中的属性
</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
标签的 < 和 > 转义为<
和>
。对于 link 标签,这不会发生 </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"])