Python實現(xiàn)讀取HTML表格 pd.read_html()
Python讀取HTML表格
數(shù)據(jù)部門提供的數(shù)據(jù)是xls格式的文件,但是執(zhí)行讀取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 # 二維數(shù)組
原因是文件格式是HTML表格,參考python xlrd unsupported format, or corrupt file.
使用pandas的read_html讀取文件,同時替換nan為空字符,數(shù)據(jù)格式保持一致。
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讀取數(shù)據(jù)不完整問題
問題:有一個較大的表格數(shù)據(jù)存在了html中,打算用read_html直接取出來這部分?jǐn)?shù)據(jù),但后來發(fā)現(xiàn)read_html讀取的數(shù)據(jù)不完整,后來檢查html的table都沒有任何問題
解決辦法
pd.read_html的默認(rèn)解析器為 'lxml' ,添加參數(shù)flavor='bs4'便可解決
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)抓取網(wǎng)頁并且解析的實例
這篇文章主要介紹了Python實現(xiàn)抓取網(wǎng)頁并且解析的功能實例,主要以解析百度問答為例說明其原理與方法,需要的朋友可以參考下2014-09-09python不到50行代碼完成了多張excel合并的實現(xiàn)示例
這篇文章主要介紹了python不到50行代碼完成了多張excel合并的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Python3實現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片
pdfkit是把 HTML+CSS 格式的文件轉(zhuǎn)換成 PDF 的一種工具,它是 wkhtmltopdf 這個工具包的 python 封裝。本文將利用pdfkit實現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片效果,感興趣的可以學(xué)習(xí)一下2022-06-06Python使用oslo.vmware管理ESXI虛擬機的示例參考
oslo.vmware是OpenStack通用框架中的一部分,主要用于實現(xiàn)對虛擬機的管理任務(wù),借助oslo.vmware模塊我們可以管理Vmware ESXI集群環(huán)境。2021-06-06