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

使用Selenium爬取网页表格数据返回空列表该如何解决

问题原因
  • 页面未完成加载就执行元素查找:你调用driver.get()后直接查找<tbody>下的<tr>元素,但目标页面的表格是动态渲染的,资源请求和DOM渲染需要一定时间,代码执行时表格还没插入到页面中,所以返回空列表。
  • 已废弃的API调用:find_elements_by_xpath是Selenium 3的旧API,在Selenium 4中已经被移除,如果你使用的是Selenium 4版本,该方法本身就无法正常返回结果。
  • 路径转义问题:Windows路径中的反斜杠\属于转义字符,直接写会导致路径解析错误,建议使用原始字符串或者正斜杠。
修复方案
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

# 路径加r标记为原始字符串,避免转义问题
driver = webdriver.Chrome(r'C:\Program Files (x86)\chromedriver.exe')
driver.get("https://www.fami-qs.org/certified-companies-6-0.html")

# 显式等待最多10秒,直到tbody下的tr元素加载完成
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//tbody/tr"))
)

# 使用Selenium 4兼容的元素查找写法
tabledata = driver.find_elements(By.XPATH, "//tbody/tr")
print(f"共获取到{len(tabledata)}行表格数据")
# 可以进一步打印每行内容验证
for tr in tabledata:
    print(tr.text)

# 用完关闭驱动
driver.quit()
额外说明
  • 如果等待后仍然获取不到,可以先确认你使用的ChromeDriver版本和本地安装的Chrome浏览器主版本完全匹配,版本不兼容会导致页面渲染监听异常。
  • 如果表格存在于iframe中,需要先调用driver.switch_to.frame()切入对应iframe后再查找元素,当前目标页面的表格不存在iframe嵌套,所以不需要这步操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:06