Python读取HTML文件中的表格数据并转换为Excel文件

最近接到一批及其不规范的xls文件,本质是html格式,只是修改后缀为xls而已,因为有大量数字字符串,导致大量数据用Excel打开时,读取的数据失真,不得已自己写了个读取程序。全部读取后,默认为文本字符串,转换为标准Excel文件。

# -*- coding: utf-8 -*-
"""
Created on Wed Apr 17 22:16:03 2019

@author: user
"""

import bs4
#import requests
from pandas.core.frame import DataFrame

def read_file(path):
    with open(path, 'r+', encoding='UTF-8') as f:
        str = f.read()
    return str.strip().replace('\ufeff', '')

bgne_lb=[]#设置一个列表用于接收数据

html=r'C:\Users\user\Desktop\测试.htm'#假设这个就是文件在本地的地址

wb=read_file(html)
soup=bs4.BeautifulSoup(wb,'lxml')#解析html
#elems=soup.findAll("table",{"class":"wikitable"})[0]#当需要进一步精确匹配时才使用
table_ys=soup.findAll("table")[0]#读取第一个表格,Excel文件转成的html,用这个就可以了。
#elems=soup.select('table')#读取表格标签
#开始循环拆解
table_trs=table_ys.findAll("tr")#获得表格中行的集合
bghs=len(table_trs)

for i in range(bghs):
    table_h=table_trs[i]
    z_lie=table_h.findAll(['td', 'th'])#获得一行中列的集合
    bgls=len(z_lie)
#    print("%s%s%s%s" % ("i:",i,"bgls:",bgls))
    bgnr_lb_h=[]
    for ii in range(bgls):
        z_lie_value=z_lie[ii].getText()
        bgnr_lb_h.append(z_lie_value)#将单独一行中的数据写成一个列表
    bgne_lb.append(bgnr_lb_h)#将整行数据作为一个元素添加到bgne_lb列表中

data=DataFrame(bgne_lb)#将获取的二维列表转为表格样式
data.to_excel("sample.xlsx", index=False,header = None)#输出为表,不带列号,输出文件名为sample.xlsx
print(data)

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值