Python实现读取HTML表格 pd.read_html()

 更新时间:2022年07月14日 14:34:03   作者:SpikeKing  
这篇文章主要介绍了Python实现读取HTML表格 pd.read_html(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python读取HTML表格

数据部门提供的数据是xls格式的文件,但是执行读取xls文件的脚本报错。

xlrd报错:

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

读取xlrd的脚本

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表格,参考python xlrd unsupported format, or corrupt file.

使用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中,打算用read_html直接取出来这部分数据,但后来发现read_html读取的数据不完整,后来检查html的table都没有任何问题

解决办法

pd.read_html的默认解析器为 'lxml' ,添加参数flavor='bs4'便可解决

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Python中range()与xrange()的区别

    详解Python中range()与xrange()的区别

    range() 和 xrange() 是两个函数,可用于在 Python的 for 循环中迭代一定次数。本文将通过示例详细说说二者的区别与使用,需要的可以参考一下
    2022-09-09
  • Python 多线程超详细到位总结

    Python 多线程超详细到位总结

    线程在程序中是独立的、并发的执行流。与分隔的进程相比,进程中线程之间的隔离程度要小,它们共享内存、文件句柄和其他进程应有的状态。线程的划分尺度小于进程,使多线程程序的并发性高。进程在执行过程中拥有独立内存单元,而多个线程共享内存,从而提升程序运行效率
    2021-11-11
  • Python中def()函数的实战练习题

    Python中def()函数的实战练习题

    def是define的缩写,用来自定义函数,下面这篇文章主要给大家介绍了关于Python中def()函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python编程基础之输入与输出

    Python编程基础之输入与输出

    这篇文章主要为大家介绍了Python输入与输出,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • python实现二叉树的遍历

    python实现二叉树的遍历

    这篇文章主要为大家详细介绍了python实现二叉树的遍历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python类如何定义私有变量

    Python类如何定义私有变量

    这篇文章主要介绍了Python类如何定义私有变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python简单实现获取当前时间

    python简单实现获取当前时间

    最近项目中经常需要python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这篇文章,如果你觉的对你有用的话,可以收藏下。
    2016-08-08
  • python实现网站用户名密码自动登录功能

    python实现网站用户名密码自动登录功能

    最近接到这样的需求通过网页用户认证登录实现上网,如何实现网站自动登录功能呢,接下来小编给大家带来了python实现网站用户名密码自动登录功能,需要的朋友可以参考下
    2019-08-08
  • Python可视化学习之seaborn调色盘

    Python可视化学习之seaborn调色盘

    seaborn是在matplotlib基础上封装的,所以matplotlib的调色盘seaborn都可以使用。本文系统介绍seaborn调色盘,相较于matplotlib,有诸多不同,需要的可以参考一下
    2022-02-02
  • pytorch 在网络中添加可训练参数,修改预训练权重文件的方法

    pytorch 在网络中添加可训练参数,修改预训练权重文件的方法

    今天小编就为大家分享一篇pytorch 在网络中添加可训练参数,修改预训练权重文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论