2011-09-24 16 views
3

我一直在使用優秀的bleach庫去除壞HTML。刪除<style>的內容...</style>使用html5lib或漂白劑的標籤

我有已經從Microsoft Word中粘貼HTML文檔中的負載,並且包含了諸如:

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

使用漂白劑(與style標籤隱含不允許),給我留下了:

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

這是沒有用的。漂白似乎只有選擇:

  • Escape tags;
  • 刪除標籤(但不包括它們的內容)。

我正在尋找第三個選項 - 刪除標籤及其內容。

有什麼辦法可以使用漂白劑或html5lib來完全去除style標籤及其內容? documentation for html5lib並不是很有幫助。

回答

5

原來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)