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

如何用Selenium抓取网页表格?执行代码遇ValueError问题

解决Selenium抓取网页表格时"No tables found"的问题

核心问题排查

你这段代码存在几个明显的错误,直接导致了找不到表格的报错:

  1. 执行顺序错误:先获取了page_source再调用sleep,此时页面还没加载完成,源码里根本没有表格内容
  2. 模块缺失/命名错误:没导入pandas(代码里用了pd),且tm应该是time模块的别名,没提前导入
  3. Windows路径转义问题:路径里的\会被当成转义字符,需要改成\\或者用原始字符串标记
  4. 固定等待不可靠:8秒的固定等待不一定能保证表格加载完成,应该用显式等待精准触发

修正后的可运行代码

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
import pandas as pd
import time

# 处理路径转义问题
driver = webdriver.Chrome(r'C:\Drivers\chromedriver.exe')
driver.get("https://fantasyteamadvice.com/dfs/nba/ownership")

# 显式等待表格加载完成,最多等待10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, 'table'))
    )
except:
    print("表格加载超时,请检查网络或页面结构")
    driver.close()
    exit()

# 等待完成后再获取页面源码
html = driver.page_source
tables = pd.read_html(html)

# 处理表格数据
if tables:
    data = tables[0]
    # 确保inputs文件夹存在,否则会报错
    data.to_csv("inputs/dk_ownership.csv", index=False)
    print(data)
else:
    print("页面中未找到可识别的表格")

driver.close()

补充说明

  • 显式等待会在表格元素出现后立即执行后续代码,比固定sleep更高效也更稳定
  • 如果运行时提示inputs文件夹不存在,要么提前创建这个文件夹,要么直接写csv的绝对保存路径
  • 若后续仍报错,可检查页面是否存在iframe嵌套表格,或表格是否通过异步接口加载(需额外处理接口请求)

内容的提问来源于stack exchange,提问作者terrell.bradford

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:21:36