使用Python解析html文件

小编 2026-06-08 阅读:243 评论:0
import sys import os import os.path from html.parser import HTMLParser #定义HTMLParser的子类,用以复写HTMLParse...
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()

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表