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

如何用BeautifulSoup抓取网页中表格的行数据?

抓取表格行数据的实操方法
  • 第一步:定位目标表格
    先找到包含紧急呼叫数据的表格节点,优先通过表格的class或id定位(如果网页有明确标识);如果没有,就从你已抓取的基础元素往下逐层查找:
# 假设list是你之前获取的基础父元素
table = list.find('table')  # 先定位表格
# 若表格有专属class(比如emergency-call-table),可精准定位:
# table = list.find('table', class_='emergency-call-table')
  • 第二步:获取表格所有行数据
    网页表格的行通常嵌套在<tbody>标签内(部分网页会省略tbody,直接将tr放在table下),先定位tbody再提取所有行:
# 优先找tbody,没有则直接从table取tr
tbody = table.find('tbody') if table.find('tbody') else table
rows = tbody.find_all('tr')  # 拿到所有表格行
  • 第三步:提取每行的单元格内容
    遍历每一行,用find_all('td')获取单元格,再提取文本或属性:
emergency_records = []
for row in rows:
    # 跳过表头行(表头一般用th标签,或有特定class)
    if row.find('th'):
        continue
    cells = row.find_all('td')
    # 根据实际单元格顺序提取数据,示例如下
    record = {
        '呼叫类型': cells[0].get_text(strip=True),
        '位置': cells[1].get_text(strip=True),
        '状态': cells[2].get_text(strip=True)
    }
    emergency_records.append(record)
  • 关键注意点:
    • 打开网页开发者工具(F12)查看真实HTML结构,确认表格层级:是table > tbody > tr > td,还是tr内嵌套了div等其他元素
    • 如果表格行有专属class(比如emergency-row),直接用tbody.find_all('tr', class_='emergency-row')精准定位,避免抓取无关行
    • 用get_text(strip=True)提取文本时,会自动去掉多余空格和换行符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:01:06