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

Python抓取Ajax动态表格 如何通过aria-busy属性判断加载完成

实现方案

你可以通过Selenium的显式等待能力,分两步校验表格加载状态,完全规避固定等待的不稳定问题:

依赖导入

首先确认你已导入显式等待所需模块:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException

核心等待逻辑

点击搜索按钮后,先校验表格进入加载状态,再校验加载完成:

# 点击搜索按钮
self.Chromium.find_element(By.ID, 'button-1511').click()

try:
    # 第一步:等待表格进入加载状态(最多等待3秒,避免点击未触发加载的异常场景)
    WebDriverWait(self.Chromium, 3, poll_frequency=0.05).until(
        lambda driver: driver.find_element(By.ID, "gridpoOverview").get_attribute("aria-busy") == "true"
    )

    # 第二步:等待表格加载完成(最多等待10秒,可根据实际接口响应时长调整超时时间)
    WebDriverWait(self.Chromium, 10, poll_frequency=0.05).until(
        lambda driver: driver.find_element(By.ID, "gridpoOverview").get_attribute("aria-busy") != "true"
    )
except TimeoutException:
    # 可自定义超时后的异常处理逻辑,比如重试、抛错提示
    print("表格加载超时")

# 此处即可执行后续的表格数据抓取逻辑

逻辑说明

  • poll_frequency参数为轮询检查属性的间隔,这里设置为0.05秒和你之前测试的间隔一致,也可以根据需求调整
  • 第一步的校验可以避免点击失效、加载未触发时,第二步直接判断为加载完成的边界问题
  • 如果你的场景不需要严格校验是否进入过加载状态,也可以直接省略第一步,只保留第二步的等待逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:08