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

使用Python Selenium无法获取网页数据,报错NoSuchElementException

解决Selenium获取动态网页表格时的NoSuchElementException错误

错误原因及修复方案:

  • 页面未加载完成就执行元素查找
    目标表格是动态渲染的,直接调用find_element会因为元素还未生成而报错。必须添加显式等待,确保元素加载完成后再操作。

  • 使用了已弃用的旧API
    find_elements_by_tag_name是Selenium 3的旧方法,Selenium 4+已不再支持,需改用find_elements(By.TAG_NAME, "tr")。

  • Windows路径转义问题
    代码中ChromeDriver路径的反斜杠\未转义,会被解析为特殊字符,导致驱动路径无效。需用原始字符串(前缀加r)或双反斜杠\\处理路径。


修正后的代码:

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

# 用原始字符串处理Windows路径,避免转义错误
driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver.exe')
url = 'https://draft.shgn.com/nfc/public/dp/788/grid'
driver.get(url)

# 显式等待表格元素出现,最长等待10秒
wait = WebDriverWait(driver, 10)
table_area = wait.until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="result"]/table'))
)

# 使用Selenium 4+的新版API查找表格行
table_entries = table_area.find_elements(By.TAG_NAME, "tr")
print(len(table_entries))

driver.close()

额外排查提示:

如果仍然报错,可检查以下几点:

  1. 确认目标页面的XPath是否正确(可通过浏览器开发者工具验证)
  2. 页面是否存在iframe,需先切换到对应iframe再查找元素
  3. 是否有反爬机制(如登录验证、人机验证)限制访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:45:09