python - 蟒蛇漂白剂:不一致的清洁行为
问题描述
我想使用漂白剂来格式化一些可能不干净的 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
标记的 < 和 > 转义为<
and>
。对于链接标签,这不会发生 - 中的空格
</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"])
推荐阅读
- ios - Xcode 更新不支持 iphone 5s
- entity-framework-core-3.0 - 如何从 ExecuteSqlInterpolatedAsync 获取查询结果?
- mongodb - 查询具有 n 条记录的集合
- vba - 如何使用按钮打开表单并自动为其中一个字段分配值
- npm - 由于 NPM 的身份验证问题,服务无法在 Kubernetes 上运行
- python - 未来的五月一日,使得五月一日在现在和结束之间出现两次
- apache-kafka - Kafka 消费者属性在 SCDF 上下文中设置在哪里?
- c++ - 如何导入 2 个不同的时区以检查两者是否都是星期一?
- xpath - 无法在 googlesheet 中找到要导入的正确 xpath
- linux-kernel - 为什么`pstore`不适用于三星S10 5G?