python - 安全地从 python 中的字符串中删除所有 html 代码

标签 python html security parsing utf-8

我已经阅读了很多关于如何使用 python 从字符串中删除所有 html 代码的问答,但没有一个是令人满意的。我需要一种方法来删除所有标签、保留/转换 html 实体并很好地处理 utf-8 字符串。

显然 BeautifulSoup 容易受到一些特制的 html 字符串的攻击,我用 HTMLParser 构建了一个简单的解析器来获取文本,但我丢失了实体

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.data = []

    def handle_data(self, data):
        self.data.append(data)

    def handle_charref(self, name):
        self.data.append(name)

    def handle_entityref(self, ent):
        self.data.append(ent)

给我类似的东西

[u'Asia, sp', u'cialiste du voyage ', ...

在 spécialiste 中丢失了重音符号“e”的实体。

使用您可以找到的许多正则表达式之一作为类似问题的答案,它总会有一些未考虑的边缘情况。

有没有我可以使用的非常好的模块?

最佳答案

bleach非常适合这项任务。它做你需要的一切。它有一个广泛的测试套件,可以检查标签可能漏过的奇怪边缘情况。我从来没有遇到过问题。

关于python - 安全地从 python 中的字符串中删除所有 html 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15891402/

相关文章:

python - Django源代码中的UTF8字符

python - 在 numba 的 jitclass 中索引多维 numpy 数组

html - 试图删除我的 "<ul>"元素的 margin-right

html - 在多行上居中行内 block

html - 焦点上的表单字段位置问题

python - python中的安全凭证存储

php - 直接访问 php superglobal 时的安全问题

javascript - 如何从 jQuery 对象文字正确调用服务器端 ASP.NET 并将数据返回给 jQuery

python - 如何从 subreddit 获取所有提交 ID?

python - 如何使用IntervalIndex生成.cat.codes