📜  bs4 表格示例 python (1)

📅  最后修改于: 2023-12-03 14:59:34.971000             🧑  作者: Mango

使用BeautifulSoup库解析HTML表格示例

在Python中,使用BeautifulSoup库可以在网页上方便地获取和解析HTML数据。其中,能够处理HTML表格的模块是bs4中的bs4.element.Tag,通过该模块我们能够方便地对HTML表格进行数据处理。

下面是一个HTML表格的示例:

<table>
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Age</th>
  </tr>
  <tr>
    <td>1</td>
    <td>Alice</td>
    <td>25</td>
  </tr>
  <tr>
    <td>2</td>
    <td>Bob</td>
    <td>30</td>
  </tr>
  <tr>
    <td>3</td>
    <td>Cathy</td>
    <td>28</td>
  </tr>
</table>

为了处理上述HTML代码,我们需要先将其解析成BeautifulSoup对象。

from bs4 import BeautifulSoup

html = """
<table>
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Age</th>
  </tr>
  <tr>
    <td>1</td>
    <td>Alice</td>
    <td>25</td>
  </tr>
  <tr>
    <td>2</td>
    <td>Bob</td>
    <td>30</td>
  </tr>
  <tr>
    <td>3</td>
    <td>Cathy</td>
    <td>28</td>
  </tr>
</table>
"""

soup = BeautifulSoup(html, 'html.parser')

首先,我们可以通过find方法找到表格(<table>)的所有行(<tr>)。

table = soup.find('table')
rows = table.find_all('tr')

解析完HTML之后,我们需要一种数据结构来表示表格。我们定义一个列表,其中每个元素表示一行的数据。

records = []

for row in rows:
  cells = row.find_all('td')
  cells = [cell.text.strip() for cell in cells]
  records.append(cells)

在上面的代码中,我们使用find_all方法找到所有单元格(<td>),并将所有单元格的字符串值添加到一个列表中。我们还将该列表添加到最终记录列表中。

使用表格数据,我们可以采取许多有趣的操作。例如,计算每个人的平均年龄:

ages = [int(r[2]) for r in records[1:]]
average_age = sum(ages) / len(ages)
print(f"The average age is {average_age}")

以上就是使用BeautifulSoup库解析HTML表格的一个示例。使用类似的技术,你可以充分利用HTML表格上的数据,提取和处理需要的信息。