Python如何实现读取HTML表格?如何解决pd.read_html()读取数据不完整?
对于大部分刚入门python的小伙伴来说,python如何读取html表格问题上还存在疑惑,今天带大家了解有关读取文件的一些操作,文件内容详细,操作简单,快跟着我一起来学习有关“Python如何实现读取HTML表格?如何解决pd.read_html()读取数据不完整?”吧,希望对大家的学习带来一定的帮助!
在python中,有读取一个html表格的功能,但是在操作的过程中不注意的话,可能会报错,比如我们现在有一个数据是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,而我们使用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] 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): if value != value: df_data[r_idx][c_idx] = "" return df_data
这就是一个正确的使用pandas来读取一个html文件。
在使用read_html读取数据时,假设我们遇到的是一个比较大的数据,使用这个来读取部分数据的话,会发现在read_html中读出来的数据是不完整的,那么如何解决这个问题呢?
首先我们可以先检查一下html和table,如果都没有问题的话,那就是pd.read_html的默认解析器问题,我们可以去默认的 'lxml' 解析器中,添加一个参数叫做flavor=‘bs4’。
关于“Python如何实现读取HTML表格?如何解决pd.read_html()读取数据不完整?”的内容讲解到这就结束了,希望通过以上内容的学习对你会有一定的帮助。