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

Selenium无法更新页面问题(Python):同URL翻页爬取失效

解决Selenium点击Next按钮后页面不更新的问题

我来帮你排查下这个问题,你遇到的情况大概率是这几个原因导致的,咱们逐个解决:

1. 固定sleep不可靠,改用显式等待

time.sleep(10)是固定时长等待,但实际页面加载速度受网络波动影响,要么浪费时间,要么还没加载完成就继续执行了。建议用Selenium的显式等待,等关键元素加载完成后再操作,稳定性会高很多。

2. 点击Next后iframe会重新加载,需重新切换

当你点击Next按钮后,包含代币持有者表格的iframe会重新刷新,之前的iframe引用会失效。必须先切回主文档,再重新定位并切换到新的iframe,才能获取到下一页的内容。

3. 按钮定位可能存在歧义

find_element_by_link_text('Next')偶尔会因为页面上有多个相同文本的按钮而出错,改用更精准的定位方式(比如XPath或CSS选择器)能避免这个问题。

修改后的代码示例

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

driver = webdriver.Chrome()
driver.get("https://etherscan.io/token/0x168296bb09e24a88805cb9c33356536b980d3fc5#balances")

wait = WebDriverWait(driver, 15)

# 第一次切换到iframe,等待iframe加载完成
iframe1 = wait.until(EC.presence_of_element_located((By.ID, 'tokeholdersiframe')))
driver.switch_to.frame(iframe1)

# 处理第一页数据
soup = BeautifulSoup(driver.page_source, 'html.parser')
token_holders = soup.find_all('tr')
# 这里可以添加数据存储/处理逻辑

# 精准定位并点击Next按钮
next_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'Next') and contains(@class, 'page-link')]")))
next_btn.click()

# 等待iframe刷新后,重新切换
time.sleep(2)  # 短暂等待iframe开始刷新
driver.switch_to.default_content()  # 先切回主页面
iframe2 = wait.until(EC.presence_of_element_located((By.ID, 'tokeholdersiframe')))
driver.switch_to.frame(iframe2)

# 处理第二页数据
soup_next = BeautifulSoup(driver.page_source, 'html.parser')
token_holders_next = soup_next.find_all('tr')
# 添加第二页数据的处理逻辑

# 如果要爬多页,可以循环执行上述点击+重新切换+数据处理的步骤,直到Next按钮不可点击

额外注意事项

  • 循环爬取时,每次点击Next后都要重复「切回主文档→重新定位iframe并切换」的步骤
  • Etherscan有反爬机制,不要频繁请求,适当增加等待间隔,模拟人类操作节奏
  • 爬取到最后一页时,Next按钮会变成不可点击状态,可以用EC.invisibility_of_element_located判断循环终止条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:37:30