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

使用Selenium抓取Steam游戏时长生成pandas表时所有元素重复如何修复

问题原因
  • 核心错误出在XPath的查询范围上:你在循环内使用的//开头的XPath是从整个HTML文档的根节点开始匹配元素,每次都会返回整个页面第一个符合条件的游戏标题和时长,所以317行结果全都是第一个游戏《巫师3》的数据。
  • XPath里的//代表全局搜索,不会限定在你当前遍历的game元素范围内。
修复方案

把循环内的XPath开头改成.//,.代表从当前节点(也就是你遍历到的单个game元素)的子节点开始搜索,就能准确拿到每个游戏对应的数据。
另外可以加隐式等待避免页面没加载完成就抓取元素的问题,修改后的完整代码如下:

from selenium import webdriver
import pandas as pd

url = 'https://steamcommunity.com/id/username/games/?tab=all'

driver = webdriver.Chrome(executable_path="path/chromedriver.exe")
# 加隐式等待,最多等10秒加载元素
driver.implicitly_wait(10)
driver.get(url)
game_hour_infos = []
games = driver.find_elements_by_class_name('gameListRow')
for game in games:
    # 把//改成.// 限定在当前game元素内搜索
    title = game.find_element_by_xpath(
        './/*[starts-with(@id,"game_")]/div[2]/div[1]/div[1]/div').text
    hour = game.find_element_by_xpath(
        './/*[starts-with(@id,"game_")]/div[2]/div[1]/div[1]/h5').text
    ghi = {
        "title": title,
        "hour": hour
    }
    game_hour_infos.append(ghi)

print(pd.DataFrame(game_hour_infos))
driver.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:36:06