2015-04-15 88 views
0

我正在用BeautifulSoup閱讀HTML文件。我在HTML中需要讀取數據的表格,但HTML包含多個表格。 爲了區分這些表格,我需要通過計算<td>標籤來查看每行上的列數。使用BeautifulSoup的閱讀表

我指望這樣的:

for i in soup.find_all('tr'): 
    for x in i.findallnext('td'): 

這將返回<tr>畢竟<td>標籤,直到文件的結尾。但是我需要知道行號(<tr>)和行號(</tr>)之間的<td>標記的數量。

<tr> <!-- Should return 2 columns, but will return 4 in script. --> 
    <td></td> 
    <td></td> 
</tr> 
<tr> 
    <td></td> 
    <td></td> 
</tr> 
+1

你的問題對我來說還不清楚,儘管有些猜測可以用來形成答案。你的例子顯示了2個表格行,每行有2個標題。您的代碼將針對這兩行中的每一行(outer for循環)以及針對找到的兩個表頭中的每一行再次運行。如果您只想要第一行中的標題數量,那麼爲什麼不嘗試:'tables = soup.find_all('table');對於表中的表:print(len(table.tr.find_all('th')))'? –

回答

3

更換findallnextfind_all

findallnext給出了文檔結尾之後的所有標籤,如您所說。

find_all爲您提供子元素。