使用Python解析html文件

import sys
import os
import os.path

from html.parser import HTMLParser
#定义HTMLParser的子类,用以复写HTMLParser中的方法
class MyHTMLParser(HTMLParser):
    #构造方法,定义data数组用来存储html中的数据
    def __init__(self):
        HTMLParser.__init__(self)
        self.data = ''
        self.flag = False
        #self.index = 0
    
    #覆盖starttag方法,可以进行一些打印操作
    def handle_starttag(self, tag, attrs):
        #pass
        #print("遇到起始标签:{} 开始处理:{}".format(tag, tag))
        #if tag == 'tr':
        #    self.index = 0
        if tag == 'div':
            for k,v in attrs:#遍历div的所有属性以及其值
                if k == 'class' and v == 'cell':#确定进入了<div class='cell'>
                    #self.index = self.index + 1
                    self.flag = True
                    self.data = self.data + '"'
                    return
    
    #覆盖endtag方法
    def handle_endtag(self, tag):
        #pass     
        #print("遇到结束标签:{} 开始处理:{}".format(tag, tag))
        if self.flag == True:
            self.data = self.data + '",'
            self.flag = False
            return
        #遇到tr结束,增加一个回车
        if tag == 'tr':
            self.data = self.data + '\n'

    #覆盖handle_data方法,用来处理获取的html数据,这里保存在data数组
    def handle_data(self, data):
        #pass
        #print("遇到数据:{} 开始处理:{}".format(data, data))
        if(self.flag == True):
            data = data.replace('\n','')#替换字段中的回车
            data = data.replace('  ','')#替换字段中的连续两个空格
            self.data = self.data + data

def read_file(filename):
    fp = open(filename,'r',encoding='utf-8')
    content = fp.read()
    fp.close()
    return content

def write_file(filename,content):
    fp = open(filename,'a+',encoding='utf-8')
    fp.write(content)
    fp.close()

def main():
    csv_file = '1.csv'
    #会员信息
    #write_file(csv_file,'"序号","账号","账号状态","登录IP","最近登录时间","登录次数","上级账号","交易次数","交易流水","账号余额","姓名"\n')
    #资金账户信息
    write_file(csv_file,'"序号","卡号/账户","开户行/平台","余额","流水","所在地","姓名","用户名","手机号","qq","邮箱","注册IP","注册时间"\n')
    
    parser = MyHTMLParser()
    for i in range(1,3):
        html_file = '%d.html'%i
        print(html_file)
        if os.path.exists(html_file) == False:
            print(html_file + '文件不存在!')
            return
        content = read_file(html_file)        
        #print(content)
        parser.feed(content)
        #对解析后的数据进行相应操作
        #print(parser.data)
        write_file(csv_file,parser.data)
        parser.close()
main()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值