You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用BeautifulSoup遍历HTML表格并提取指定元素值?

搞定表格数据提取:用BeautifulSoup获取指定内容

嘿,刚接触爬虫的时候我也对着类似的表格结构卡过壳,咱们一步步来解决这个问题!

首先,我先假设你的表格HTML结构大概是这样的(如果实际结构略有不同,调整选择器就行):

<table>
  <tr>
    <td><span class="username">player1</span></td>
    <td><span class="country-flag-small" tip="Indonesia"></span></td>
  </tr>
  <tr>
    <td><span class="username">player2</span></td>
    <td><span class="country-flag-small" tip="Malaysia"></span></td>
  </tr>
  <!-- 更多行... -->
</table>

接下来是具体的Python代码实现,我会把每一步都写清楚:

from bs4 import BeautifulSoup

# 假设你已经获取到了HTML内容,这里用上面的示例HTML模拟
html_content = """
<table>
  <tr>
    <td><span class="username">player1</span></td>
    <td><span class="country-flag-small" tip="Indonesia"></span></td>
  </tr>
  <tr>
    <td><span class="username">player2</span></td>
    <td><span class="country-flag-small" tip="Malaysia"></span></td>
  </tr>
</table>
"""

# 解析HTML
soup = BeautifulSoup(html_content, 'html.parser')

# 遍历所有<tr>标签
for row in soup.find_all('tr'):
    # 获取username类的<span>文本
    username_span = row.find('span', class_='username')
    username = username_span.get_text(strip=True) if username_span else '未知用户'
    
    # 获取country-flag-small类的<span>的tip属性值
    country_span = row.find('span', class_='country-flag-small')
    country = country_span.get('tip') if country_span else '未知国家'
    
    # 打印结果,或者存入列表/文件
    print(f"用户名: {username}, 国家: {country}")

关键知识点解释:

  • soup.find_all('tr'):找出页面中所有的<tr>标签,返回一个可遍历的列表。
  • row.find('span', class_='username'):在当前行<tr>里查找指定class的<span>,用class_是因为class是Python关键字,避免冲突。
  • get_text(strip=True):提取标签里的文本,strip=True会去掉前后的空格和换行符。
  • get('tip'):获取标签的指定属性值,如果属性不存在会返回None,所以我们加了判断避免报错。

如果你的HTML是从网页上爬取的,只需要把html_content替换成requests.get(url).text(记得先导入requests库)就行啦!

内容的提问来源于stack exchange,提问作者mdivk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:13:46