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

Selenium获取Ogame排行榜表格所有行报错问题求助

解决Selenium无法获取Ogame高分页面表格内容的问题

我来帮你排查下问题并给出针对性的解决方案,你的代码目前存在几个关键问题导致无法正常获取表格内容:

问题原因分析

  • 定位目标错误:你用find_elements_by_xpath("//*[@id='ranks']/tbody")获取的是整个tbody元素,而非表格的每一行。即使能拿到元素,text属性只会返回tbody下所有文本的拼接,不是你想要的逐行数据,甚至可能因为文本都嵌套在tr/td里,导致直接取tbody的text返回空值。
  • 旧API弃用:find_elements_by_xpath是Selenium 4.x之前的旧方法,新版本已标记为弃用,继续使用可能引发兼容性问题。
  • 等待机制不严谨:固定的time.sleep(30)虽然给了你手动操作的时间,但如果手动完成操作后表格元素还没完全渲染,或者页面有动态加载,直接获取元素很可能会失败。

解决办法

1. 切换到新版元素定位API

先导入By类,用官方推荐的新定位方式替代旧方法:

from selenium.webdriver.common.by import By

2. 精准定位表格每一行

目标是获取所有表格行,所以应该定位到tbody下的所有tr元素,XPath调整为//*[@id='ranks']/tbody/tr。

3. 用显式等待替代固定sleep

使用WebDriverWait等待表格行加载完成,能更精准地控制等待时机,避免过早获取未渲染的元素:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

4. 逐行提取数据

循环每个tr元素,可选择直接获取整行文本,或遍历每行的td元素提取具体列的精细数据。

修改后的完整代码示例

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
import time

url = "https://lobby.ogame.gameforge.com/"
driver_path = "chromedriver.exe"
browser = webdriver.Chrome(driver_path)
browser.get(url)

# 给你手动完成登录和打开高分页面的时间
time.sleep(30)

# 等待表格行加载完成,最多等待10秒
try:
    # 定位所有表格行
    rows = WebDriverWait(browser, 10).until(
        EC.presence_of_all_elements_located((By.XPATH, "//*[@id='ranks']/tbody/tr"))
    )
    
    table_data = []
    for row in rows:
        # 方式1:获取整行文本
        table_data.append(row.text)
        
        # 方式2:提取每行的每个单元格文本(如需精细数据,打开注释即可)
        # cells = row.find_elements(By.TAG_NAME, "td")
        # row_data = [cell.text for cell in cells]
        # table_data.append(row_data)
    
    print("表格数据:")
    for item in table_data:
        print(item)
except Exception as e:
    print(f"获取表格数据失败:{str(e)}")
finally:
    # 操作完成后关闭浏览器
    browser.quit()

额外注意事项

  • 如果表格是滚动加载(需要滚动页面才能显示更多行),你需要添加滚动逻辑,比如用browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")滚动到底部,多次执行直到没有新行加载。
  • 确保你的ChromeDriver版本与本地Chrome浏览器版本完全匹配,版本不匹配会引发各种奇怪的兼容性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:32:44