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

如何将爬取的球员数据导入Pandas三列DataFrame并添加国家字段

解决爬取海外球员数据并规整到Pandas DataFrame的问题

你的核心问题是没有按行维度提取球员数据,直接抓取所有<td>会把所有数据揉成一维列表,无法对应到DataFrame的行和列。下面是修正后的完整代码,同时添加国家字段:

from bs4 import BeautifulSoup
import requests
import pandas as pd

# 1. 请求页面并解析
url = 'https://ng.soccerway.com/players/players_abroad/nigeria/'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}
req = requests.get(url, headers=headers)
# 用html.parser解析,避免解析异常
soup = BeautifulSoup(req.text, 'html.parser')

# 2. 定位目标表格(页面中只有一个符合类名的表格,取第一个)
target_table = soup.find('table', class_="playersabroad table")

# 3. 构造球员数据列表
player_records = []
# 遍历表格的每一行(跳过表头行,表头是<th>,数据行是<td>)
for row in target_table.find_all('tr')[1:]:
    # 提取当前行的所有td文本
    cols = [col.text.strip() for col in row.find_all('td')]
    # cols的结构是[姓名, 联赛, 球队],添加国家字段(这里固定为Nigeria)
    cols.append('Nigeria')
    player_records.append(cols)

# 4. 创建DataFrame
df = pd.DataFrame(player_records, columns=['player-name', 'League', 'team_name', 'Country'])

# 查看结果
print(df.head())

关键修正点说明:

  • 解析器替换:把原代码的'html'换成'html.parser',避免BeautifulSoup解析时的兼容性问题
  • 按行提取数据:先定位表格,再遍历每一行数据,确保每个球员的信息是一组独立的列表元素
  • 添加国家字段:因为页面是尼日利亚海外球员列表,直接给每条记录追加'Nigeria'即可
  • 跳过表头行:表格的第一行是表头(包含<th>),所以用[1:]跳过,只处理数据行

运行代码后,你会得到一个结构规整的DataFrame,包含player-name、League、team_name和Country四列,每条行对应一个球员的完整信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:02:34