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

Scrapy遍历表格:请求新增球员罚单类型与时间提取代码

修改后的Scrapy代码(支持提取球员罚单类型与时间)

针对你提供的代码,我们可以调整球员数据的存储结构,同时新增罚单信息的提取逻辑,具体修改如下:

team1_data = {}
for table in cols[0].css(".acta-table"):
    # 提取表格标题
    table_heading = table.css("thead th::text").get()
    table_data = {}  # 当前表格的数据容器
    
    if table_heading == "Equip Tècnic":
        # 技术团队数据处理(保持原有逻辑)
        table_data = []
        for row in table.css("tbody tr"):
            table_data.append(row.css("td.tc::text").get())
    else:
        # 球员数据处理:新增罚单提取逻辑
        for row in table.css("tbody tr"):
            player_number = row.css("span.num-samarreta-acta2::text").get()
            player_name = row.css("td a::text").get()
            
            # 初始化球员字典,包含姓名和罚单列表
            player_info = {
                "name": player_name,
                "bookings": []
            }
            
            # 提取罚单信息:遍历当前行的所有罚单元素
            for booking in row.css("td.acta-tarjetes span"):
                # 罚单类型:通过class判断(比如黄牌是acta-groc,红牌是acta-vermell)
                booking_class = booking.attrib.get("class", "")
                if "acta-groc" in booking_class:
                    booking_type = "黄牌"
                elif "acta-vermell" in booking_class:
                    booking_type = "红牌"
                else:
                    booking_type = "其他罚单"
                
                # 罚单时间:获取相邻的文本节点
                booking_time = booking.xpath("following-sibling::text()[1]").get(default="").strip()
                
                # 将罚单信息添加到球员的罚单列表
                if booking_type and booking_time:
                    player_info["bookings"].append({
                        "type": booking_type,
                        "time": booking_time
                    })
            
            # 将球员信息存入表格数据
            if player_number:
                table_data[player_number] = player_info

    # 将当前表格数据存入球队总数据
    team1_data[table_heading] = table_data

关键修改说明:

  • 数据结构调整:将原有的{球员号码: 姓名}改为{球员号码: {"name": 姓名, "bookings": []}},确保能存储多组罚单信息
  • 罚单类型识别:通过罚单元素的CSS class判断类型(可根据目标页面实际class调整,比如acta-groc对应黄牌,acta-vermell对应红牌)
  • 罚单时间提取:使用XPath的following-sibling获取罚单元素旁的时间文本,确保关联准确
  • 容错处理:添加default=""和strip()处理空值或多余空格,避免数据混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:07:00