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

如何使用Python Selenium获取iframe内隐藏的ASX公告表格数据?

解决思路

  • 第一步:先定位到正确的iframe,不要直接用索引[0]选取iframe,页面共有4个iframe,你选中的第一个大概率不是承载公告表格的目标iframe。你可以先打印所有iframe的属性特征定位目标:
for index, iframe in enumerate(driver.find_elements(By.TAG_NAME, 'iframe')):
    print(f"iframe {index} 的src属性: {iframe.get_attribute('src')}")
    print(f"iframe {index} 的id属性: {iframe.get_attribute('id')}")

找到src包含公告相关路径的iframe后,通过属性定位而非索引选取,稳定性更高。

  • 第二步:添加显式等待,避免元素未加载完成就执行操作。动态加载的iframe和内部表格都需要等待加载完成后再操作,不要直接用硬等待,用Selenium自带的显式等待逻辑。
  • 第三步:优化元素选择逻辑,你之前用的多层标签+索引的选择方式非常脆弱,页面结构稍有调整就会出现索引越界报错,建议改用querySelector直接定位目标元素,或者用Selenium的元素定位方法逐层查找。
  • 第四步:如果iframe是视口懒加载,可先将页面滚动到iframe所在位置,触发iframe内容加载后再切换。

可运行参考代码

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

# 初始化驱动这里省略,你用自己的初始化逻辑即可
wait = WebDriverWait(driver, 20) # 最长等待20秒,可自行调整

# 1. 滚动到目标iframe位置,触发加载(先替换成你定位到的目标iframe的定位规则,比如按src匹配)
target_iframe = wait.until(EC.presence_of_element_located(
    (By.XPATH, '//iframe[contains(@src, "announcement")]') # 这里的xpath根据你实际打印的iframe属性调整
))
driver.execute_script("arguments[0].scrollIntoView();", target_iframe)

# 2. 等待iframe可切换,再切入
wait.until(EC.frame_to_be_available_and_switch_to_it(target_iframe))

# 3. 等待iframe内的表格加载完成
wait.until(EC.presence_of_element_located((By.TAG_NAME, 'announcement_data')))

# 4. 获取表格行
table_rows = driver.execute_script("return document.querySelectorAll('announcement_data table tbody tr');")
print(f"表格行数:{len(table_rows)}")

# 遍历获取内容也可以直接用Selenium定位
# table_rows = driver.find_elements(By.CSS_SELECTOR, 'announcement_data table tbody tr')

常见排查点

如果还是报元素找不到,切进iframe后可以先打印当前页面的body源码片段,确认是否已经进入正确的iframe,以及表格内容是否已经加载出来:

print(driver.execute_script("return document.body.innerHTML.substring(0, 1000);"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:27:02