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

Scrapy爬取含ROWSPAN的表格数据异常问题求助

解决Scrapy爬取带ROWSPAN表格数据的问题

模拟HTML示例(对应你提到的测试文件)

<table>
  <tr>
    <th>Family</th>
    <th>Name</th>
    <th>Age</th>
  </tr>
  <tr>
    <td rowspan="3">Smith</td>
    <td>John</td>
    <td>30</td>
  </tr>
  <tr>
    <td>Jane</td>
    <td>28</td>
  </tr>
  <tr>
    <td>Tom</td>
    <td>5</td>
  </tr>
  <tr>
    <td rowspan="2">Brown</td>
    <td>Mike</td>
    <td>40</td>
  </tr>
  <tr>
    <td>Lisa</td>
    <td>35</td>
  </tr>
</table>

修改后的Scrapy代码

核心思路是跟踪当前生效的Family值以及剩余需要填充的行数,解决rowspan覆盖行的空值问题:

import scrapy

class TableSpider(scrapy.Spider):
    name = 'table_spider'
    # 替换为你的本地HTML文件路径
    start_urls = ['file:///Users/xxx/Documents/simulated_table.html']

    def parse(self, response):
        # 获取所有表格行,跳过表头行
        rows = response.xpath('//table/tr')[1:]
        current_family = None
        remaining_rowspan = 0

        for row in rows:
            # 检查当前行是否有Family列的td
            family_cell = row.xpath('./td[1]')
            if family_cell:
                # 更新当前Family值
                current_family = family_cell.xpath('./text()').get().strip()
                # 读取rowspan属性,默认值为1
                rowspan = int(family_cell.xpath('./@rowspan').get() or 1)
                # 剩余需要填充的行数 = rowspan - 1(当前行已用一次)
                remaining_rowspan = rowspan - 1
            else:
                # 无Family列,使用缓存值,剩余行数减1
                if remaining_rowspan > 0:
                    remaining_rowspan -= 1

            # 提取其他列数据
            name = row.xpath('./td[last()-1]/text()').get().strip()
            age = row.xpath('./td[last()]/text()').get().strip()

            yield {
                'Family': current_family,
                'Name': name,
                'Age': age
            }

关键逻辑说明

  • current_family:存储当前需要填充的家庭名称,仅在遇到带rowspan的首行时更新
  • remaining_rowspan:记录该家庭值还需要填充多少行,每处理一个覆盖行就减1,直到归零后等待下一个家庭值
  • 针对不同结构的表格,可调整td的索引位置(比如如果列顺序变化,修改td[1]、td[last()-1]等定位)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:25:12