Bleach:如何将nofollow属性添加到现有链接?

时间:2017-03-22 05:25:50

标签: python bleach

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

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

1 个答案:

答案 0 :(得分:1)

这是一个古老的问题,但是由于它仍然出现在搜索结果中,因此我仍然值得回答。

Bleach的linkify()可以同时处理两者既有的<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)