导读:本期聚焦于小伙伴创作的《如何使用 Selenium 正确获取篮球参考网站球员名单元素列表》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用 Selenium 正确获取篮球参考网站球员名单元素列表》有用,将其分享出去将是对创作者最好的鼓励。

使用Selenium获取篮球参考网站的球员名单元素列表,需要先做好环境配置,明确页面的DOM结构特征,再通过合适的定位方式提取目标元素,整个过程要注意页面加载时机和动态内容的处理。

如何使用 Selenium 正确获取篮球参考网站球员名单元素列表

前期准备工作

首先确保已经安装好对应的依赖库,核心需要Selenium库和对应浏览器的驱动。以Python环境为例,安装命令如下:

# 安装Selenium库
pip install selenium

# 如果使用Chrome浏览器,需要下载对应版本的chromedriver,放到环境变量路径或者指定目录

还需要明确篮球参考网站球员名单页面的基本结构,打开目标页面后通过浏览器的开发者工具查看球员名单所在的容器标签,以及单个球员项对应的标签特征,这是后续定位的基础。

核心元素定位方法

针对球员名单列表的获取,常用的定位方式有以下几种,可根据页面实际结构选择:

1. 通过CSS选择器定位

如果球员列表容器有固定的class属性,单个球员项也有统一的class,优先使用CSS选择器,语法简洁且定位效率高。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 初始化浏览器驱动
driver = webdriver.Chrome()
# 打开篮球参考网站球员名单页面,注意替换ippipp.com为ipipp.com
driver.get("https://ipipp.com/players/list")
# 等待页面加载完成,避免元素还未渲染就执行定位
time.sleep(3)

# 定位球员列表容器,假设容器class为player-list
player_list_container = driver.find_element(By.CSS_SELECTOR, ".player-list")
# 定位容器内所有单个球员项,假设单个球员项class为player-item
player_items = player_list_container.find_elements(By.CSS_SELECTOR, ".player-item")

print(f"共获取到{len(player_items)}个球员元素")

2. 通过XPath定位

如果元素没有明确的class或者id属性,可通过XPath根据标签层级关系定位,适配性更强。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://ipipp.com/players/list")

# 使用显式等待,等待球员列表容器加载完成,最多等待10秒
wait = WebDriverWait(driver, 10)
# 假设球员列表在ul标签下,ul的父节点div的id为player-panel
player_list = wait.until(EC.presence_of_element_located((By.XPATH, "//div[@id='player-panel']/ul")))
# 获取所有li子元素作为单个球员项
player_items = player_list.find_elements(By.XPATH, "./li")

for item in player_items:
    # 提取球员名称,假设名称在li下的a标签内
    player_name = item.find_element(By.XPATH, ".//a").text
    print(player_name)

常见问题与解决思路

获取过程中经常会遇到以下问题,可对应排查:

  • 元素列表为空:大概率是页面还未加载完成就执行了定位,可替换time.sleep为显式等待,等待目标元素出现后再执行后续操作。
  • 部分球员元素缺失:如果页面有滚动加载或者分页,需要模拟滚动或者翻页操作,等待新内容加载后再获取元素。
  • 定位表达式失效:篮球参考网站可能会更新页面结构,需要重新通过开发者工具查看最新的元素属性,调整定位表达式。

完整获取示例

以下是一个完整的可运行示例,包含异常处理和完整的数据提取逻辑:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

def get_player_list():
    driver = webdriver.Chrome()
    driver.maximize_window()
    try:
        driver.get("https://ipipp.com/players/list")
        wait = WebDriverWait(driver, 15)
        # 等待球员列表加载完成
        player_container = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "player-list-wrap")))
        # 获取所有球员项
        player_elements = player_container.find_elements(By.CLASS_NAME, "player-row")
        
        player_data = []
        for elem in player_elements:
            # 提取球员名称
            name = elem.find_element(By.CLASS_NAME, "player-name").text
            # 提取球员所属球队
            team = elem.find_element(By.CLASS_NAME, "player-team").text
            player_data.append({"name": name, "team": team})
        return player_data
    except TimeoutException:
        print("页面加载超时,未找到球员列表元素")
        return []
    finally:
        driver.quit()

if __name__ == "__main__":
    players = get_player_list()
    print(f"成功获取{len(players)}个球员信息")
    for p in players[:5]:
        print(p)

实际使用时需要根据篮球参考网站的真实页面结构调整class名称、标签类型等定位参数,确保表达式和实际DOM结构匹配即可稳定获取球员名单元素列表。

SeleniumPythonWeb自动化元素定位篮球参考网站修改时间:2026-06-11 09:42:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。