Отбеливатель: Как добавить атрибут 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)