2

我知道可以链接尚未成为 html 链接的 URL,并且 Bleach 会自动添加rel="nofollow". (来源:http ://bleach.readthedocs.io/en/latest/linkify.html )

但是如何将 nofollow 属性添加到已经是 html 链接的 URL(即它们已经是<a>标签)?

4

1 回答 1

1

这是一个老问题,但由于它仍然出现在搜索结果中,我认为无论如何都值得回答。

Bleachlinkify()确实处理预先存在的<a>链接和类似链接的文本。因此,您需要添加rel="nofollow"到 html 片段中的所有链接的所有内容就是调用linkify()

def add_nofollow(text_html):
    linker = bleach.linkifier.Linker()
    return linker.linkify(text_html)

或者,如果需要处理预先存在的链接,则可以使用自定义过滤器来丢弃所有新链接:

def add_nofollow_nonew(text_html):

    def linker_callback(attrs, new=False):
        if new:
            return None
        return attrs

    linker = bleach.linkifier.Linker(callbacks = [linker_callback] + bleach.linkifier.DEFAULT_CALLBACKS)
    return linker.linkify(text_html)
于 2020-11-15T15:26:49.037 回答