使用BeautifulSoup获取页面中包含最大行数的表

时间:2010-06-11 07:08:46

标签: python beautifulsoup

有人能告诉我如何在一个行数最多的HTML页面中获取该表吗?我正在使用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

我真的迷失了。有帮助吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

像这样计算number_of_rows:

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