要解决Beautiful Soup不解析嵌套表格数据的问题,可以使用递归函数来处理嵌套表格。
下面是一个示例代码,演示了如何使用递归函数处理嵌套表格数据:
from bs4 import BeautifulSoup
def parse_table(table):
data = []
for row in table.find_all('tr'):
row_data = []
for cell in row.find_all(['td', 'th']):
if cell.find('table'): # 如果单元格中有嵌套表格
nested_table = cell.find('table')
nested_data = parse_table(nested_table) # 递归调用解析嵌套表格
row_data.append(nested_data)
else:
row_data.append(cell.get_text(strip=True))
data.append(row_data)
return data
# 假设HTML代码如下:
html = '''
Header 1
Header 2
Header 3
Data 1
Data 2
Nested Header 1
Nested Header 2
Nested Data 1
Nested Data 2
'''
soup = BeautifulSoup(html, 'html.parser')
table = soup.find('table')
data = parse_table(table)
print(data)
上述代码会输出以下结果:
[['Header 1', 'Header 2', 'Header 3'], ['Data 1', 'Data 2', [['Nested Header 1', 'Nested Header 2'], ['Nested Data 1', 'Nested Data 2']]]]
这样,即可成功解析包含嵌套表格数据的HTML表格。