一、最终方案
适配 Pandas 2.x / 3.x 所有版本,彻底解决跨设备报错
核心逻辑:将 HTML 字符串包装为内存文件流,强制让 pandas 识别为文本而非文件路径,规避新版版本路径判定BUG
import io import pandas as pd # self_table 为 HTML 表格字符串(str) df = pd.read_html(io.StringIO(self_table))[0]二、问题现象
本机环境:代码正常运行,无报错,可正常解析网页表格
另一台设备环境:相同代码直接抛出
FileNotFoundError / OSError报错核心特征:pandas 将 HTML 标签字符串识别为本地文件路径,提示
No such file or directory: <html>...</html>
三、环境差异(根本诱因)
| 环境 | Pandas版本 | Lxml版本 | 兼容行为 |
| 本机(正常) | 2.0.3(旧版) | 4.9.3 | 宽松识别:带<标签的字符串 → 判定为HTML文本 |
| 其他设备(报错) | 3.0.3(新版) | 6.1.1 | 严格识别:普通字符串优先判定为本地文件路径 |
报错截图
四、踩坑全过程复盘
- 增加str包裹self_table,仍然报错
- 增加str、且手动包裹完整
<html><body>外壳,依旧报错