Отбеливатель: Как добавить атрибут nofollow к существующим ссылкам?

Я знаю, что можно связать URL-адреса, которые еще не стали HTML-ссылками, и Bleach автоматически добавит rel="nofollow", (Источник: http://bleach.readthedocs.io/en/latest/linkify.html)

Но как мне добавить атрибут nofollow к URL-адресам, которые уже являются HTML-ссылками (т.е. они уже <a> теги)?

0 ответов

Это старый вопрос, но, поскольку он все еще отображается в результатах поиска, я думаю, что на него все равно стоит ответить.

Отбеливателя 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)
Другие вопросы по тегам