当前位置: 首页 > 工具软件 > ParseHTML > 使用案例 >

python 解析html文档 html.parse

艾令雪
2023-12-01

解析html文档,采用html.parser  库

```
#1 导入库,
from html.parser import HTMLParser
from html.entities import name2codepoint
#2 创建具体处理文档的类,继承HTML
#里面的方法必须重写,方法名不可以随便变化,否则无法处理。
class MyHTMLParser(HTMLParser):
    #处理开始标签,参数为标签和属性列表。
    def handle_starttag(self,tag,attrs):
        print('开始---',tag)
        for attr in attrs:
            print('属性',attr)
    #处理结束标签,参数为 标签
    def handle_endtag(self,tag):
        print('结束...',tag)
    #处理数据,数据是开始标签和结束标签的所有内容
    #默认处理所有标签的数据。
    #所以具体使用的使用,请在开始标签和结束标签处理方法中
    #设计一些属性来检测是否位于我们所希望的标签内部
    def handle_data(self,data):
        print('数据+++',data)
    #处理注释,参数是data,是猪似的内容.
    def handle_comment(self,data):
        print('This is zhu shi ',data)
    #处理一些声明,doctype  html.开头标记
    def handle_decl(self, decl):
        print('-'*50,decl,'-'*50)
    #处理实体字符,name参数是文档中所有的实体字符,chr()方法,将实体字符转化为字符串一种是英文表示的 ,
    def handle_entityref(self,name):
        c=chr(name2codepoint[name])
        print('entityref:',c)
    #处理殊字符有两种,一种是数字表示的Ӓ,这两种字符都可以通过Parser解析出来
    def handle_charref(self, name):
        if name.startswith() == 'x':
            c=chr(int(name[1:],16))
        else:
            c=chr(int(name))
        print('Num ent :',c)
#创建解析对象
parser=MyHTMLParser()

with open('Text文本格式.html','r') as f:
    for line in f.readlines():
        #调用解析对象的read方法进行解释,参数是字符串feed()方法可以多次调用,也就是不一定一次把整个HTML字符串都塞进去,可以一部分一部分塞进去.
        parser.feed(line)    
```

 类似资料: