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

Selenium使用XPath无法定位Etherscan网站页码元素问题求助

问题原因及修复方案

核心错误点

  • XPATH语法错误:类名属性未加引号,且多类名完全匹配规则要求类名顺序、空格完全一致才会命中
  • 遗漏iframe切入操作:Etherscan的持仓余额表格是嵌套在iframe内加载的,直接在外层DOM查找元素必然定位失败
  • 定位规则不准确:你所写的类名匹配规则无法命中存储最大页码的元素

修正后的可运行代码

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

driver = webdriver.Firefox()
driver.get("https://etherscan.io/token/0xB8c77482e45F1F44dE1745F52C74426C631bDD52#balances")
wait = WebDriverWait(driver, 30)

# 切入持仓列表对应的iframe
iframe = wait.until(EC.presence_of_element_located((By.ID, "tokenholderlistiframe")))
driver.switch_to.frame(iframe)

# 定位所有分页数字按钮,取最大值
page_btns = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//ul[contains(@class,'pagination')]//a[contains(@class,'page-link') and @data-dt-idx]")))
max_page = max([int(btn.text) for btn in page_btns if btn.text.isdigit()])
print(f"最大页码数:{max_page}")

# 操作完成切回主DOM
driver.switch_to.default_content()
driver.quit()

补充说明

如果运行时触发Cloudflare人机验证,手动完成验证后代码会自动继续执行,也可以接入无头浏览器验证绕过方案降低拦截概率,最终输出的最大页码和预期的20一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:24:01