2015-07-10 89 views
0

我有以下HTML數據。我需要得到公正的 「2」 吧,用BeautifulSoup4:使用BeautifulSoup直接從HTML中提取數據

<td rowspan="2" style="text-align: center; vertical-align: middle;"> 
    <small>3</small> 
</td> 

我想:

k.find('rowspan')['style'] 

其中產生的異常:

Traceback (most recent call last): File "", line 1, in TypeError: list indices must be integers, not str

是否有可能做到這一點使用BS4?或者說我使用不同的庫直接提取CSS?

+0

請告訴我,如果我改變了你的問題的含義,因爲我在第一部分中掙扎。如果你感興趣的是rowspan屬性的值,爲什麼你使用'k.find('rowspan')['style']'?什麼是'k'?這與CSS有什麼關係? –

+0

k這是我的湯姆的HTML代碼。我認爲這是第一個想法。我開始用python和bs4開始我的冒險。那麼我應該用什麼來獲得rowspan的attrib? – doman

+0

你絕對確定**你確實在使用'find'方法,而不是**'findall'方法?因爲['find'方法永遠不會返回列表,只有'None'(如果沒有找到任何匹配的標籤)](http://www.crummy.com/software/BeautifulSoup/bs4/doc/#find)。 –

回答

0

試試這個:

from bs4 import BeautifulSoup 
soup = BeautifulSoup('<td rowspan="2" style="text-align: center; vertical-align: middle;"><small>3</small></td>', 'html.parser') 
print(soup.td['rowspan']) 
1

你爲什麼要使用find("rowspan")?您並未搜索<rowspan>標籤。

當傳遞單個字符串參數時,find method將基於標記名稱搜索標記。

你應該使用什麼是這樣的,這意味着,「找到第一個<td>標籤與屬性值rowspan="2",並返回其style屬性的值」:

k.find('td', rowspan="2")['style'] 

見的"Kinds of filters"節指定要搜索哪些標籤的各種方式的文檔。

相關問題