大家好啊!今天咱们来聊一个特别实用的Python库 - Bleach。它就像是一个内容安全卫士,主要用来清理和过滤HTML内容。如果你正在开发网站,特别是需要处理用户输入的富文本内容,那这个库简直就是你的得力助手!
安装指南
安装 Bleach 特别简单,只需要一行命令:
pip install bleach
安装完成后,咱们可以用下面的代码验证一下:
import bleach
print(bleach.__version__)
如果能正常显示版本号,就说明安装成功啦!
小提示:建议Python版本 >= 3.7
基础使用
先来看看最基本的用法。Bleach主要有三个核心功能:清理(clean)、消毒(sanitize)和链接处理。
1. 基本清理
import bleach
# 包含潜在危险HTML的文本
html_text = '<p>这是一个<script>alert("危险代码!")</script>段落<a href="http://example.com">带链接</a></p>'
# 清理HTML
clean_text = bleach.clean(html_text)
print(clean_text)
运行结果:
这是一个段落<a href="http://example.com">带链接</a>
看到了吗?那个可能执行恶意JavaScript的标签被自动删除了!
2. 自定义允许的标签
import bleach
html_text = '<p><b>粗体文本</b>和<i>斜体文本</i></p>'
# 只允许<p>和<b>标签
clean_text = bleach.clean(html_text, tags=['p', 'b'])
print(clean_text)
运行结果:
实战案例
案例1:处理用户评论
假设我们在开发一个博客系统,需要处理用户提交的评论:
import bleach
def process_comment(user_comment):
# 定义允许的标签和属性
allowed_tags = ['p', 'b', 'i', 'u', 'a']
allowed_attributes = {
'a': ['href', 'title']
}
# 清理评论内容
clean_comment = bleach.clean(
user_comment,
tags=allowed_tags,
attributes=allowed_attributes,
strip=True
)
return clean_comment
# 测试一下
user_input = '''
'''
safe_comment = process_comment(user_input)
print("处理后的评论:")
print(safe_comment)
运行结果:
普通链接
案例2:链接处理器
有时我们需要自动处理文本中的URL,让它们变成可点击的链接:
import bleach
from bleach.linkifier import LinkifyFilter
def auto_link_text(text):
# 自定义链接处理
def link_callback(attrs, new=False):
href = attrs.get((None, 'href'), '')
# 给所有链接添加target="_blank"和rel="nofollow"
attrs[(None, 'target')] = '_blank'
attrs[(None, 'rel')] = 'nofollow'
return attrs
# 处理文本中的URL
linked_text = bleach.linkify(
text,
callbacks=[link_callback],
skip_tags=['pre']
)
return linked_text
# 测试一下
text = "快来看看这个网站:https://python.org 真不错!"
result = auto_link_text(text)
print(result)
小结
Bleach真的是处理HTML内容安全的好帮手!它主要能帮我们:
清理不安全的HTML标签和属性
自定义允许的标签和属性
自动处理文本中的URL
要深入了解更多功能,建议看看Bleach官方文档。
记住一点:在处理用户输入时,安全永远是第一位的!Bleach能帮你省不少心。
有啥问题随时问我哈!咱们下篇文章见!
领取专属 10元无门槛券
私享最新 技术干货