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

使用read_html解析足球预测网站表格时遇ValueError:未找到表格求助

解决read_html无法解析表格的问题

我看了你的代码和提供的table_html片段,问题主要出在两个地方:一是HTML语法错误(thead里有个<th>标签的属性引号没闭合),二是read_html需要完整的<table>标签包裹内容,而你只传递了innerHTML(缺少外层的<table>标签)。下面是具体的修复方案:

方案一:修复HTML并传递完整表格结构

先获取完整的table元素外层HTML,修复语法错误后再用read_html解析:

import pandas as pd
from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:/Users/Admin/Documents/chromedriver_win32/chromedriver")
link = "https://projects.fivethirtyeight.com/soccer-predictions/super-lig/"
driver.get(link)

# 获取包含完整<table>标签的outerHTML,而非仅innerHTML
table = driver.find_element_by_xpath('//*[@id="forecast-table"]')
table_html = table.get_attribute('outerHTML')

# 修复原HTML中未闭合的引号错误
table_html = table_html.replace('class="top bordered nosort colspan="4"', 'class="top bordered nosort" colspan="4"')

# 解析表格并提取目标DataFrame
dfs = pd.read_html(table_html)
df = dfs[0]
print(df.head())

driver.quit()

方案二:用BeautifulSoup手动提取数据(更稳定)

如果还是遇到解析问题,手动提取数据构建DataFrame的方式更可靠,不受HTML小错误影响:

import pandas as pd
from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome(executable_path="C:/Users/Admin/Documents/chromedriver_win32/chromedriver")
link = "https://projects.fivethirtyeight.com/soccer-predictions/super-lig/"
driver.get(link)

table = driver.find_element_by_xpath('//*[@id="forecast-table"]')
soup = BeautifulSoup(table.get_attribute('outerHTML'), 'html.parser')

# 提取表头(处理嵌套的span文本)
headers = []
for th in soup.find('thead').find_all('th'):
    text = th.get_text(strip=True)
    if not text:
        text = th.find('span').get_text(strip=True)
    headers.append(text)

# 提取每一行的数据
rows = []
for tr in soup.find('tbody').find_all('tr'):
    row_data = [td.get_text(strip=True) for td in tr.find_all('td')]
    rows.append(row_data)

# 构建DataFrame
df = pd.DataFrame(rows, columns=headers)
print(df.head())

driver.quit()

关键提示:

  • outerHTML会返回包含<table>标签的完整结构,这是read_html识别表格的必要前提。
  • 原HTML中的语法错误(未闭合的属性引号)会直接导致解析失败,必须先修复。
  • 手动提取数据的方式更适配动态渲染的复杂表格,稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:54:28