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

为何pandas read_html返回空列表?Selenium亦获取空表格

解决方法

问题根源

这个页面的表格数据并非初始HTML自带的静态内容,而是通过JavaScript发起AJAX请求动态加载的。这就导致:

  • pandas.read_html直接请求页面时,只能拿到空的表格框架,获取不到实际数据
  • 仅用Selenium等待表格元素存在时,表格的tbody部分还未填充数据,所以获取的outerHTML仍是空表格

方案一:改进Selenium等待逻辑

等待表格的tbody中出现数据行,确保数据加载完成后再提取内容:

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

driver = webdriver.Chrome()
driver.get("https://anex.us/grades/?dept=ENGR&number=102")

# 等待表格tbody中加载出至少一行数据
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '#dataTable tbody tr'))
)

# 提取表格HTML并解析为DataFrame
table_html = driver.find_element(By.ID, 'dataTable').get_attribute('outerHTML')
dfs = pd.read_html(table_html)
print(dfs[0])

driver.quit()

方案二:直接调用后端API(更高效)

页面实际是请求接口获取JSON格式的表格数据,直接请求该接口即可跳过前端渲染,高效获取数据:

import pandas as pd
import requests

api_url = "https://anex.us/grades/api.php?dept=ENGR&number=102"
response = requests.get(api_url)
data = response.json()

# 将JSON数据转换为DataFrame
df = pd.DataFrame(data)
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:01:06