2010-06-11 30 views
1

任何人都可以告訴我如何在具有最多行的HTML頁面中獲取表格嗎?我正在使用BeautifulSoup。使用BeautifulSoup在頁面中獲取最大行數的表格

雖然有一個小問題。有時候,似乎有一個表嵌套在另一個表中。

<table> 
    <tr> 
     <td> 
      <table> 
       <tr> 
        <td></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td></td> 
        <td></td> 
       </tr> 
      </table> 
     <td> 
    </tr> 
</table> 

table.findAll('tr')代碼執行時,它會計算所有表的子行和其下的嵌套表中的行。父表只有一行,但嵌套表有三個,我會認爲這是最大的表。以下是我用來挖掘當前最大表格的代碼,但並未考慮上述情況。

soup = BeautifulSoup(html) 

#Get the largest table 
largest_table = None 
max_rows = 0 
for table in soup.findAll('table'): 
    number_of_rows = len(table.findAll('tr')) 
    if number_of_rows > max_rows: 
     largest_table = table 
     max_rows = number_of_rows 

我真的迷失了這個。任何幫助傢伙?

在此先感謝

+0

你不是有一些class和id可以用來區分表? – systempuntoout 2010-06-11 08:46:44

回答

3

計算NUMBER_OF_ROWS這樣的:

number_of_rows = len(table.findAll(lambda tag: tag.name == 'tr' and tag.findParent('table') == table)) 
相關問題