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

Python Selenium如何提取元素data-stars属性高效获取osu谱面星数

问题原因
  1. get_property()用于提取DOM标准内置属性,data-stars是自定义HTML属性,需使用get_attribute()获取
  2. 全局查找.beatmap-icon没有和当前遍历的谱面元素绑定,容易出现取错值、索引错位的问题
最优实现

无需计算索引,直接从当前遍历的谱面节点下查找子元素即可,代码更简洁,容错率更高:

# -*- encoding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome(executable_path=r"C:\Users\Gabri\anaconda3\chromedriver.exe")
wait = WebDriverWait(driver, 20)
driver.get('https://osu.ppy.sh/beatmapsets/941078')
maps = driver.find_elements_by_css_selector(".beatmapset-beatmap-picker__beatmap")

for stars in maps:
    ActionChains(driver).move_to_element(stars).perform()
    # 直接从当前谱面元素下提取星数,无需文本清洗
    star_difficulty = float(stars.find_element_by_css_selector(".beatmap-icon").get_attribute("data-stars"))
    print(f"{star_difficulty=}")
原可行代码逻辑说明

你使用xpath按索引查找的写法也可正常运行,核心修正点就是将get_property()替换为get_attribute(),同时通过索引匹配了当前遍历的谱面对应图标元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:54:02