一尘不染

从Python字符串中删除不在允许列表中的HTML标签

html

我有一个包含文本和HTML的字符串。我想删除或以其他方式禁用某些HTML标记,例如<script>,同时允许其他HTML标记,以便我可以安全地将其呈现在网页上。我有一个允许标签的列表,如何处理字符串以删除任何其他标签?


阅读 286

收藏
2020-05-10

共1个答案

一尘不染

这是一个使用BeautifulSoup的简单解决方案:

from bs4 import BeautifulSoup

VALID_TAGS = ['strong', 'em', 'p', 'ul', 'li', 'br']

def sanitize_html(value):

    soup = BeautifulSoup(value)

    for tag in soup.findAll(True):
        if tag.name not in VALID_TAGS:
            tag.hidden = True

    return soup.renderContents()

如果您也要删除无效标签的内容,请替换tag.extract()tag.hidden

您可能还会考虑使用lxml和Tidy。

2020-05-10