Python解决xlrd读取HTML格式Excel报错及pd.read_html数据不完整问题

Aria
Aria
发布时间:2026-10-15| 3人浏览过
原创

本文解决Python中使用xlrd读取HTML格式Excel文件时出现的Unsupported format报错,并针对pd.read_html读取数据不完整的问题,推荐将解析器flavor设置为'bs4'以获取完整数据。

Python读取HTML表格

数据部门提供的数据文件虽然扩展名为xls,但在执行读取脚本时却遭遇报错。

具体报错信息如下:

xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'<html xm'

导致该错误的原始读取脚本如下:

data_lines = read_excel_file(self.file_path)

def read_excel_file(file_path):
    """
    读取excel文件
    """
    import xlrd
    print('[Info] excel file: {}'.format(file_path))
    book = xlrd.open_workbook(file_path)
    sheet = book.sheet_by_index(0)
    data_lines = []
    for row in range(0, sheet.nrows):
        line_data = []
        for column in range(0, sheet.ncols):
            val = sheet.cell(row, column).value
            line_data.append(val)
        data_lines.append(line_data)
    return data_lines  # 二维数组

经排查,根本原因在于该文件实际格式为HTML表格,而非真正的Excel二进制格式。参考关于python xlrd unsupported format, or corrupt file的相关讨论可知,xlrd无法解析此类文件。

为解决此问题,改用pandas库的read_html函数读取文件。同时,在读取过程中需将NaN值替换为空字符,以确保数据格式的一致性。

def read_html_table(file_path):
    """
    读取html表格
    """
    import pandas as pd
    pd_table = pd.read_html(file_path)
    df = pd_table[0]
    # num_col = df.shape[1]
    # num_row = df.shape[0]
    df_data = df.values.tolist()
    df_data = df_data[1:]
    for r_idx, row in enumerate(df_data):
        for c_idx, value in enumerate(row):
            # 判断nan,参考https://stackoverflow.com/questions/944700/how-can-i-check-for-nan-values
            if value != value:
                df_data[r_idx][c_idx] = ""
    return df_data

通过上述调整,读取问题得以解决。

pd.read_html读取数据不完整问题

问题描述:当尝试从较大的HTML表格中直接提取数据时,发现pd.read_html返回的数据并不完整。经检查,源HTML中的table结构本身并无异常。

解决办法

pd.read_html默认使用的解析器为'lxml'。若遇到数据提取不完整的情况,可通过添加参数flavor='bs4'来切换解析器,从而解决问题。

以上为个人经验分享,希望能为大家提供参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。