Python:获取html表格数据、html表格保存Excel

# !/usr/bin/env python
# -*-coding:utf-8 -*-
import os.path
import bs4,shutil,time
from pandas.core.frame import DataFrame

def get_html_tabledata(htmlpath,tableindex: int = 0):
    """
    html文件,获取表格数据
    :param htmlpath: html文件路径
    :param tableindex: table索引,int,默认为0
    :return:字典列表
    """
    with open(htmlpath, 'r+',encoding='UTF-8') as f:
        s = f.read()
    wb = s.strip().replace('\ufeff', '')
    soup = bs4.BeautifulSoup(wb, 'lxml')  # 解析html

    # 获取指定表格的数据
    table=soup.findAll("table")[tableindex] # 读取第二个表格
    table_rows = table.findAll("tr")  # 获得表格中行的集合
    # 获取表格第一行作为字典keykey
    keys = [table_rows[0].findAll(['th', 'td'])[i].getText().strip() for i in range(len(table_rows[0].findAll(['th', 'td']))) ]
    tabledata = []
    for table_row in table_rows[1:]:
        row = table_row.findAll(['th', 'td'])  # 获取th/td标签
        linedata = {keys[i]: row[i].getText().strip() for i in range(len(row))} # 每行数据按字段返回:键值对
        tabledata.append(linedata)
    # print(tabledata)
    return tabledata

def html_to_excel(htmlpath,excelpath,tableindex: int = 0):
    """html文件,将指定表格数据保存到excel文件"""
    tabledata = get_html_tabledata(htmlpath,tableindex)
    data = DataFrame(tabledata)  # 将字典列表转为表格样式
    # print(data,len(data),len(data.columns)) # 获取行数:len(df);获取列数:len(df.columns)
    # 写入excel
    data.to_excel(excelpath, index=False, header=True)  # 输出为表,不带列号,输出文件名

if __name__ == '__main__':
    htmlpath = r'C:\Users\yhen\Downloads\2022-06-17T13_51_06+0800.html'
    tabledata = get_html_tabledata(htmlpath,1)
    tabledata = sorted(tabledata,key=lambda x:x['关键字'])
    print(tabledata)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值