2010-06-11 31 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)) 
相关问题