python里面的HTMLParser解析html,跟c++和其他语言的html库解析不同,是使用类继承的方式。
通过重实现HTMLParser类的几个函数,来达到解析html的目的。
主要的重载的函数有:
handle_starttag #开始标签的解析
handle_endtag #结束标签的解析
handle_data #标签内数据的解析
下面通过一个例子看学习下具体的使用(这个例子是python主页上的一个例子):
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Encountered a start tag:", tag)
def handle_endtag(self, tag):
print("Encountered an end tag :", tag)
def handle_data(self, data):
print("Encountered some data :", data)
parser = MyHTMLParser()
parser.feed('
Test''
Parse me!
')源html为:
TestParse me!
输出结果为:
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h1
Encountered some data : Parse me!
Encountered an end tag : h1
Encountered an end tag : body
Encountered an end tag : html现在标签内容都能解析了。
总结:
1)继承HTMLParser类
class MYParser(HTMLParser):
2)def handle_starttag(self, tag, attrs) #重定义解析开始标签,tag为标签,attrs是标签的属性及属性值:是个dict
#这儿有一个例子,提取网页中的网址
3) def handle_endtag(self, tag): #重定义解析结束标签
4)def handle_data(self, data): #重定义解析数据