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
相关产品推荐
相关产品推荐

