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

Python爬虫问题:为爬取的球员数据表添加对应球员列失败求助

解决为爬取的球员表格添加对应名称列的问题

问题分析

你的代码存在两个核心问题,导致球员名称列无内容:

  • player_name是列表类型,没有get()方法,调用player_name.get(j)会直接抛出异常,这是列无内容的直接原因
  • 嵌套的for j in player_name循环完全多余,且每次循环直接break,无法将每个URL与对应的球员名称建立关联

修正后的完整代码

import pandas as pd
import numpy as np
from urllib.request import urlopen
import time

# 修正URL列表的语法错误(补全闭合括号)
directory = [
    'https://fbref.com/en/players/d38fdf53/',
    'https://fbref.com/en/players/773f5f12/',
    'https://fbref.com/en/players/54bcdeb0/',
    'https://fbref.com/en/players/f2dd9a21/'
]

player_name = ['Pervis Estupiñán','Michael Estrada','Gonzalo Plata','Carlos Gruezo']

scrapped_list = []

# 使用zip同时遍历URL和对应的球员名称,确保一一对应
for url_link, name in zip(directory, player_name):
    url = urlopen(url_link)
    # 获取页面第一个表格数据
    df1 = pd.read_html(url)[0]
    df1 = df1.dropna()
    time.sleep(3)  # 避免请求过于频繁被网站限制
    df1 = np.transpose(df1)
    # 插入当前球员名称作为第一列
    df1.insert(0, "Player", name, allow_duplicates=True)
    scrapped_list.append(df1)

# 合并所有爬取到的表格
final_df = pd.concat(scrapped_list)
print(final_df)

关键改动说明

  • 补全了代码缺失的库导入语句,新手容易遗漏这些基础依赖
  • 修正了directory列表的语法错误(原代码末尾缺少闭合括号)
  • 使用zip(directory, player_name)实现URL与球员名称的一一绑定,彻底避免索引错位问题
  • 移除了无效的嵌套循环和错误的get()调用,直接使用当前遍历到的球员名称插入列
  • 将合并后的DataFrame重命名为final_df,避免与循环内的临时变量混淆,代码可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:12:13