Python - 美丽的汤 - table

Python - Beautiful soup - table

我有下面的table。我想抓取这个 table 以在输出格式中有一个字典:

<h3>TITRE PRINCIPAL</h3>
<table>
    <tr>
        <th>Titre 1</th>
        <th>Titre 2</th>
        <th>Titre 3</th>
        <th>Titre 4</th>
        <th>Titre 5</th>
    </tr>
    <tr>
        <td>Valeur A</td>
        <td>Valeur B</td>
        <td>Valeur C</td>
        <td>Valeur D</td>
        <td>Valeur E</td>
    </tr>
    <tr>
        <td>Valeur F</td>
        <td>Valeur G</td>
        <td>Valeur H</td>
        <td>Valeur I</td>
        <td>Valeur J</td>
    </tr>
    <tr>
        <td>Valeur K</td>
        <td>Valeur L</td>
        <td>Valeur M</td>
        <td>Valeur N</td>
        <td>Valeur O</td>
    </tr>
</table>

输出:

{
    'Valeur A': ['Valeur B', 'Valeur C', 'Valeur D', 'Valeur E'],
    'Valeur F': ['Valeur G', 'Valeur H', 'Valeur I', 'Valeur J'],
    'Valeur K': ['Valeur L', 'Valeur M', 'Valeur N', 'Valeur O']
}

我正在这样做:

soup = BeautifulSoup(fichier_html, "html.parser")
for td in tr.findChildren():

我知道 td.text 会给我 td 中包含的字符串,但我无法组织我的代码来获得我想要的内容

有人可以帮我吗?

如果 html_doc 是您从问题中得到的 HTML 代码,那么:

soup = BeautifulSoup(html_doc, "html.parser")

trs = soup.select("tr:has(td)")
out = {tr.td.text: [td.text for td in tr.select("td")[1:]] for tr in trs}
print(out)

打印:

{
    "Valeur A": ["Valeur B", "Valeur C", "Valeur D", "Valeur E"],
    "Valeur F": ["Valeur G", "Valeur H", "Valeur I", "Valeur J"],
    "Valeur K": ["Valeur L", "Valeur M", "Valeur N", "Valeur O"],
}