Удалите содержимое тегов <style>... </style>, используя html5lib или bleach - PullRequest
3 голосов
/ 24 сентября 2011

Я использовал отличную библиотеку bleach для удаления плохого HTML.

У меня есть множество документов HTML, которые были вставлены из Microsoft Word и содержат вещикак:

<STYLE> st1:*{behavior:url(#ieooui) } </STYLE>

Использование отбеливателя (с явным запретом тега style) оставляет меня с:

st1:*{behavior:url(#ieooui) }

Что не помогает.У Bleach есть только опции:

  • Методы Escape;
  • Удалить теги (но не их содержимое).

Я ищутретий вариант - удалить теги и их содержимое.

Есть ли способ использовать bleach или html5lib для полного удаления тега style и его содержимого?Документация для html5lib не очень помогает.

1 Ответ

5 голосов
/ 25 сентября 2011

Оказалось, lxml был лучшим инструментом для этой задачи:

from lxml.html.clean import Cleaner

def clean_word_text(text):
    # The only thing I need Cleaner for is to clear out the contents of
    # <style>...</style> tags
    cleaner = Cleaner(style=True)
    return cleaner.clean_html(text)
...