想要将两个
<table>
合并,一个带有表头,另一个包含表格值。 第一个表格由<table>
,<thead>
和在<tbody>
中没有值的仅表头信息组成。第二个表格由<table>
,在<thead>
中没有值和<tbody>
中只有表格值组成。
HTML代码:
html = """<div style="border: 1px solid #000;">
<div style="background-color:#005297;">
<table id="CCCCCT" class="BBBBBt" style="width: calc(100% - 16px)">
<thead>
<tr>
<td><span class="AAAAA">DD </span> EE</td><td>FF</td><td>GG</td><td>HH</td><td>II</td>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<table id="CCCCC" class="BBBBB">
<thead>
<tr>
<td></td><td></td><td></td><td></td><td></td>
</tr>
</thead>
<tbody>
<tr class="JJJJJ""><td><div>1111111</div></td><td>M</td><td>4444444</td><td><div>77777<i
class="PPPPPP"></i> 10101010101</div></td><td><span class="">13131313131aa</span></td></tr>
<tr class="KKKKK"><td><div>2222222</div></td><td>N</td><td>5555555</td><td><div>88888<i
class="PPPPPP"></i> 1111111111</div></td><td><span class="QQQQQ">1414141414141aa</span></td>
</tr>
<tr class="LLLLL"><td><div>3333333</div></td><td>O</td><td>6666666</td><td><div>999999<i
class="PPPPPP"></i> 1212121212121</div></td><td><span class="">15151515151aa</span></td></tr>
</tbody>
</table>
</div>"""
Python代码
from bs4 import BeautifulSoup
import pandas as pd
import re
soup = BeautifulSoup(html,'html.parser')
table = soup.find('div', attrs={'style':re.compile("^border:.*$")})
df_list = pd.read_html(str(table))
df_list
执行结果
[Empty DataFrame
Columns: [DD EE, FF, GG, HH, II]
Index: [],
Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
0 1111111 M 4444444 77777 10101010101 13131313131aa
1 2222222 N 5555555 88888 1111111111 1414141414141aa
2 3333333 O 6666666 999999 1212121212121 15151515151aa]
期望结果(5列)
DD EE FF GG HH II
0 1111111 M 4444444 77777 10101010101 13131313131aa
1 2222222 N 5555555 88888 1111111111 1414141414141aa
2 3333333 O 6666666 999999 1212121212121 15151515151aa]