2015-04-02 32 views
0

我想寫一個腳本,它將從Python中的簡單html文件中刪除所有圖像,並將文件保存到位。Python條形文件的圖像標籤

這裏是我的嘗試:

from bs4 import BeautifulSoup, NavigableString 

def strip_tags(html, invalid_tags): 
    soup = BeautifulSoup(html) 

    for tag in soup.findAll(True): 
     if tag.name in invalid_tags: 
      s = "" 

      for c in tag.contents: 
       if not isinstance(c, NavigableString): 
        c = strip_tags(unicode(c), invalid_tags) 
       s += unicode(c) 

      tag.replaceWith(s) 

    return soup 

data ="C:\\Users\\ADMIN\\Documents\\webpage 1.htm" 
with open(data) as orig_f: 
     html = BeautifulSoup(orig_f.read()) 
     invalid_tags = ['img'] 
     print orig_f 
     print strip_tags(orig_f, invalid_tags) 

有兩件事情,我掙扎,首先所有的代碼運行沒有錯誤,但最後一行,打印,打印什麼,前行打印一個內存地址。我試過尋找我的問題/閱讀文件,以瞭解我在這裏做錯了什麼,但我正在掙扎。

如何讓此代碼從我的HTML文件中刪除所有圖像標記,以及將其保存到位的最佳做法是什麼?

回答

1

「orig_f」是一個文件對象。如果你想打印內容的一種方法是做orig_f.read()或循環f並打印每一行。我認爲這就是爲什麼strip_tags函數返回None。我沒有使用BeautifulSoap,所以不能說它會返回什麼。

對於就地保存,我總是在臨時位置複製文件並在覆蓋當前文件之前打開用於讀取的臨時文件。這是因爲文件可能會被巨大的存儲在內存中,我處理的大型ascii文件可能會崩潰,如果所有的內容一次加載。