我有两张相同att:class
的表格,att
或tr
没有其他td
。
<table class='content'>
<caption>
<em> table1 </em>
</caption>
<tbody>
<tr>
<th> A </th>
<th> B </th>
<th> C </th>
</tr>
<tr>
<td> a1 <td>
<td> b1 <td>
<td> c1 <td>
</tr>
<tr>
<td> a2 <td>
<td> b2 <td>
<td> c2 <td>
</tr>
</tbody>
</table>
<table class='content'>
<caption>
<em> table2 </em>
</caption>
<tbody>
<tr>
<th> A </th>
<th> B </th>
<th> C </th>
</tr>
<tr>
<td> a3 <td>
<td> b3 <td>
<td> c3 <td>
</tr>
<tr>
<td> a4 <td>
<td> b4 <td>
<td> c4 <td>
</tr>
</tbody>
</table>
然后我想要一个像
这样的字典 {table1:[ {A:[a1,a2]}, {B:[b1,b2]}, {C:[c1,c2]} ], table2:[ {A:[a3,a4]}, {B:[b3,b4]}, {C:[c3,c4]} ], }
任何人都可以帮助我获得这个或类似的词典吗?
答案 0 :(得分:1)
试试这个(还请注意,您有<td>...<td>
而不是<td>...</td>
):
import bs4
your_html = """..."""
soup = bs4.BeautifulSoup(your_html)
big_dict = {}
for table in soup.find_all("table"):
key = table.find("em").get_text().strip()
big_dict[key] = []
headers = []
for th in table.find_all("th"):
headers.append(th.get_text().strip())
big_dict[key].append({headers[-1]: []})
for row in table.find_all("tr"):
for i, cell in enumerate(row.find_all("td")):
big_dict[key][i][headers[i]].append(cell.get_text().strip())
print(big_dict)
上面让我:
{'table1': [{'A': ['a1', 'a2']}, {'B': ['b1', 'b2']}, {'C': ['c1', 'c2']}], 'table2': [{'A': ['a3', 'a4']}, {'B': ['b3', 'b4']}, {'C': ['c3', 'c4']}]}
答案 1 :(得分:0)
您要问的是找到表格行数据,映射到表格caption
作为关键字链接的表格标题。
{
table[0].caption: {
th[n] : [
col[n][0],
col[n][1],
col[n][1]]
}
}
所以你需要将任务细分为:
td
的索引保存为表中的相应列。 我可以指出documentation在HTML文档中进行搜索的方向,而不是为您编写代码。
请提出更具体的问题,我们可以在将来为您提供更直接的答案。