使用BeautifulSoup获取每页最大行数的表格

1 投票
1 回答
3189 浏览
提问于 2025-04-15 23:50

有没有人能告诉我,怎么在一个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 个回答

3

这样计算行数:

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

撰写回答