有人能告诉我如何在一个行数最多的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
我真的迷失了。有帮助吗?
提前致谢
答案 0 :(得分:3)
像这样计算number_of_rows:
number_of_rows = len(table.findAll(lambda tag: tag.name == 'tr' and tag.findParent('table') == table))