zoukankan      html  css  js  c++  java
  • HTMLParser 笔记

    # 关于html.parse.HTMLParser的使用
    from html.parser import HTMLParser
    class MyHtmlParser(HTMLParser):
        # 使用“<!DOCTYPE html>”将会被调出来
        def handle_decl(self, decl):
            # 实现基类的方法
            HTMLParser.handle_decl(self, decl)
            # 自定义输出
            print('decl {}'.format(decl))
        # 开始标签
        def handle_starttag(self, tag, attrs):
            HTMLParser.handle_starttag(self, tag, attrs)
            print("start tag is <{}>".format(tag))
        # 结束标签
        def handle_endtag(self, tag):
            HTMLParser.handle_endtag(self, tag)
            print("end tag is </{}>".format(tag))
        # 打印数据
        def handle_data(self, data):
            HTMLParser.handle_data(self, data)
            print('data is {}'.format(data))
        # 打印单标签
        def handle_startendtag(self, tag, attrs):
            HTMLParser.handle_startendtag(self, tag, attrs)
            print('单标签: {}'.format(tag))
        # 打印注释
        def handle_comment(self, data):
            HTMLParser.handle_comment(self, data)
            print("comment is /*{}*/".format(data))
        # 关闭
        def close(self):
            HTMLParser.close(self)
            print('Close...')
    my_html_parser = MyHtmlParser()  # 调用解析函数
    # HTMLParser.feed()进行解析
    my_html_parser.feed("<html><head><title>Test</title></head><body><h1>Parse me!<br /></h1></body></html>")
    my_html_parser.close()  # 文件结束的处理方法,貌似可以释放缓冲区
    """
    D:笔记python电子书Python3>python index.py
    start tag is <html>
    start tag is <head>
    start tag is <title>
    data is Test
    end tag is </title>
    end tag is </head>
    start tag is <body>
    start tag is <h1>
    data is Parse me!
    start tag is <br>
    end tag is </br>
    单标签: br
    end tag is </h1>
    end tag is </body>
    end tag is </html>
    Close...
    """
    
    """
    附加笔记:
    HTMLParser.reset():重置实例,丢失所有未处理的数据,这被称为隐式实例化时间
    HTMLParser.getpos():返回当前行数和偏移量信息
    """
  • 相关阅读:
    深入浅出Win32多线程程序设计【2】线程控制
    深入浅出Win32多线程程序设计【1】基本概念
    在两个ASP.NET页面之间传递值
    Javascript基础
    DataGrid的几个小技巧
    推荐取代Visio的中国人的软件——Edraw
    ASP.NET如何防范SQL注入攻击
    软件版本号规定原则
    三层体系结构总结(三)
    .Net工具 .NET文档生成工具2.2
  • 原文地址:https://www.cnblogs.com/namejr/p/9998783.html
Copyright © 2011-2022 走看看