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

如何用Pandas从多赛季英超网页构建带来源的球队战绩表

多赛季英超特定球队数据提取实现方案

核心思路

把需要爬取的赛季链接整理成列表,循环处理每个链接:提取对应赛季的目标球队数据,添加来源链接列,最后将所有赛季的数据合并成一个表格。

完整实现代码

import requests
import pandas as pd

# 1. 定义要爬取的多赛季链接列表
season_urls = [
    'https://www.skysports.com/premier-league-table',  # 当前赛季
    'https://www.skysports.com/premier-league-table/2021'  # 21/22赛季
]

# 2. 初始化空DataFrame存储最终结果
final_df = pd.DataFrame()

# 3. 循环处理每个赛季链接
target_team = "Liverpool"  # 可替换为其他目标球队
for url in season_urls:
    try:
        # 请求网页内容
        html = requests.get(url).content
        # 解析网页中的表格,取最后一个表格(SkySports的积分榜通常位于最后)
        df_list = pd.read_html(html)
        df = df_list[-1]
        
        # 筛选目标球队的数据,忽略大小写避免匹配失败
        team_data = df[df["Team"].str.contains(target_team, case=False)]
        
        # 添加来源链接列
        team_data['Link'] = url
        
        # 将当前赛季数据追加到总表格
        final_df = pd.concat([final_df, team_data], ignore_index=True)
    except Exception as e:
        print(f"处理链接 {url} 时出错: {str(e)}")

# 4. 输出最终结果
print(final_df)
# 可选:保存为本地CSV文件
# final_df.to_csv('liverpool_season_data.csv', index=False)

关键说明

  • 链接扩展:直接在season_urls列表中添加更多赛季链接即可,SkySports的赛季链接格式通常为https://www.skysports.com/premier-league-table/赛季年份(例如20/21赛季对应/2020)
  • 球队匹配优化:使用case=False忽略大小写,避免网页中球队名称大小写不一致导致的筛选遗漏
  • 异常处理:加入try-except块,防止单个链接处理失败导致整个程序中断
  • 数据合并:通过pd.concat合并多赛季数据,ignore_index=True重置索引,避免出现重复索引问题

输出示例

#       Team  Pl   W  ...   A  GD  Pts  Last 6  Link
0  10  Liverpool   8   2  ...  12   8   10     NaN  https://www.skysports.com/premier-league-table
1   2  Liverpool  38  28  ...  12  68   92     NaN  https://www.skysports.com/premier-league-table/2021

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:05:38