使用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 个回答
3
这样计算行数:
number_of_rows = len(table.findAll(lambda tag: tag.name == 'tr' and tag.findParent('table') == table))