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

从Basketball Reference多超链接表格提取球员链接至Pandas新列

提取Basketball Reference表格中球员超链接至Pandas DataFrame

问题描述

需要从Basketball Reference的表格(比如MVP榜单)中提取每位球员的个人页面链接,存入Pandas DataFrame的新列。现有方法仅在球员链接是该行第一个链接时有效,当行内存在其他前置链接(如赛季联赛链接)时,会错误提取无关链接(如/leagues/NBA_2022.html),期望提取的是球员专属链接(如/players/j/jokicni01.html)。

解决方案

利用BeautifulSoup筛选符合球员链接特征的a标签:Basketball Reference的球员链接路径均以/players/开头,以此作为判断依据,精准定位目标链接。

示例代码

import pandas as pd
from bs4 import BeautifulSoup
import requests

# 示例URL:2022年NBA MVP榜单页面
url = "https://www.basketball-reference.com/awards/awards_2022.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# 定位MVP表格
mvp_table = soup.find('table', id='mvp')

# 将表格转为DataFrame
df = pd.read_html(str(mvp_table))[0]

# 提取球员链接的函数
def get_player_link(row):
    # 找到该行所有a标签
    links = row.find_all('a')
    # 筛选以/players/开头的链接
    for link in links:
        href = link.get('href')
        if href.startswith('/players/'):
            return href
    return None

# 遍历表格的每一行,提取链接
player_links = []
for row in mvp_table.find('tbody').find_all('tr'):
    # 跳过表头行或空行
    if row.find('th', {'scope': 'row'}) is None:
        continue
    player_link = get_player_link(row)
    player_links.append(player_link)

# 将链接添加到DataFrame的新列
df['Player Link'] = player_links

print(df[['Player', 'Player Link']].head())

当前错误输出

Player        Player Link
0      Nikola Jokic  /leagues/NBA_2022.html
1      Joel Embiid   /leagues/NBA_2022.html
2      Giannis Antetokounmpo  /leagues/NBA_2022.html

期望输出

Player        Player Link
0      Nikola Jokic  /players/j/jokicni01.html
1      Joel Embiid   /players/e/embiidjo01.html
2      Giannis Antetokounmpo  /players/a/antetgi01.html

关键说明

  • 核心逻辑:通过判断链接href属性是否以/players/开头,精准筛选球员个人页面链接,避免提取行内其他无关链接(如赛季、球队链接)。
  • 兼容场景:适用于Basketball Reference所有包含球员列的表格(如常规赛场均数据、季后赛数据、奖项榜单等),只要球员链接符合/players/xxx/xxxxxx.html的格式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:05:54