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

如何获取网页apx-root标签内动态生成的HTML代码

问题解决方案

问题根因

你最初代码失效的核心原因是目标页面是单页应用(SPA),所有内容靠前端JavaScript动态渲染生成,调用driver.get()后立即读取DOM,此时apx-root标签内的内容还没完成渲染,只能拿到空值或者不完整的内容。

优化后可运行代码

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 selenium.common.exceptions import TimeoutException

url = "https://registry.verra.org/app/projectDetail/VCS/812"
# 可按需配置Chrome启动参数
options = webdriver.ChromeOptions()
# options.add_argument("--headless=new") # 取消注释开启无头模式,无可视化窗口
driver = webdriver.Chrome(options=options)
driver.get(url)
delay = 10 # 可调整超时时长,适配不同网络环境

try:
    # 直接等待apx-root标签加载完成,无需指定其他业务元素,适配性更强
    WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'body > apx-root')))
    # 额外增加短等待,确保内部动态内容完全渲染
    driver.implicitly_wait(2)
except TimeoutException:
    print("页面加载超时,请检查网络或调整等待时长")

apx_root = driver.find_element(By.CSS_SELECTOR, 'body > apx-root')
html_content = apx_root.get_attribute("innerHTML")
print(html_content)

# 执行完成后关闭驱动释放资源
driver.quit()

补充说明

  • 你自行排查出的等待逻辑方向完全正确,上述代码对等待条件做了简化,不需要额外定位其他业务元素即可适配所有同类型页面
  • 如果后续需要从拿到的innerHTML里提取具体字段,推荐配合BeautifulSoup解析,代码更简洁易维护
  • 网络环境较差的情况下可以适当延长delay的数值,避免超时误判

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:39:03