2008-10-21 51 views
6

我一直在試圖從HTML文件中去除一些數據。我有編碼的邏輯來獲得正確的單元格。現在我在努力讓 '細胞' 的實際內容:如何使用BeautifulSoup從HTML'datacell'中獲取文本

,這裏是我的htm剪斷

那麼headerRows [0] [10] .contents

[<font size="+0"><font face="serif" size="1"><b>Apples Produced</b><font size="3">  
    </font></font></font>] 

注意,這是一個列表來自Python []的項目。

我需要蘋果生產的價值,但無法達到它。

任何建議,將上一本好書,說明這一點會賺我的感恩永恆


感謝您的回答感謝

建議。但是 - 沒有更普遍的答案。會發生什麼,如果我的手機沒有一個大膽的屬性

說它是:

[<font size="+0"><font face="serif" size="1"><I>Apples Produced</I><font size="3">  
    </font></font></font>] 

蘋果生產

我努力學習閱讀/理解的說明文件和回覆將有幫助

我真的很感謝這個幫助。關於這些答案的最好的事情是,從它們中推廣起來容易得多,然後我可以從BeautifulSoup文檔中做到這一點。我學會了在Fortran時代進行編程,而我在享受學習python的同時也消除了它的力量 - BeautifulSoup就是一個例子。對我來說,製作整個文檔非常困難。

乾杯

回答

3
headerRows[0][10].contents[0].find('b').string 
5

BeautifulSoup documentation應該包括你需要的一切 - 在這種情況下,它看起來像你想使用findNext

headerRows[0][10].findNext('b').string 

不依賴於<b>標籤一個更通用的解決辦法請使用參數findAll,它允許您僅搜索NavigableString對象:

>>> s = BeautifulSoup(u'<p>Test 1 <span>More</span> Test 2</p>') 
>>> u''.join([s.string for s in s.findAll(text=True)]) 
u'Test 1 More Test 2' 
0

我有一個基類,我用一堆方法擴展了所有美麗的湯類,這些方法幫助我獲得一組元素中的文本,而這些元素不一定要依賴於結構。其中一種方法如下:

def clean(self, val): 
    if type(val) is not StringType: val = str(val) 
    val = re.sub(r'<.*?>', '', s) #remove tags 
    val = re.sub("\s+" , " ", val) #collapse internal whitespace 
    return val.strip() #remove leading & trailing whitespace 
相關問題