Python—解析HTML页面(HTMLParser)

HTMLParser类的定义及常用方法

类的定义

  • HTMLParser主要是用来解析HTML文件(包括HTML中无效的标记)。
  • 参数convert_charrefs表示是否将所有的字符引用自动转化为Unicode形式,Python3.5以后默认是True。
  • HTMLParser可以接收相应的HTML内容,并进行解析,遇到HTML的标签会自动调用相应的handler(处理方法)来处理,用户需要自己创建相应的子类来继承HTMLParser,并且复写相应的handler方法。
  • HTMLParser不会检查开始标签和结束标签是否是一对。

常用方法

实例应用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

try:

    from HTMLParser import HTMLParser

except:

    from html.parser import HTMLParser

 

class MyHTMLParser(HTMLParser):

    def __init__(self):

        HTMLParser.__init__(self)

        self.data = []   # 定义data数组用来存储html中的数据

        self.links = [] 

            

    def handle_starttag(self, tag, attrs):

        print('<%s>' % tag)

        if tag == "a":

            if len(attrs) == 0pass

            else:

                for (variable, value)  in attrs:

                    if variable == "href":

                        self.links.append(value)

     

    def handle_endtag(self, tag):

        print('' % tag)

 

    def handle_startendtag(self, tag, attrs):

        print('<%s/>' % tag)

 

    def handle_data(self, data):

        print('data===>', data)

 

    def handle_comment(self, data):

        print('')

 

    def handle_entityref(self, name):

        print('&%s;' % name)

 

    def handle_charref(self, name):

        print('&#%s;' % name)

         

if __name__ == "__main__":

    html_code = '''

            这是头标签

            

                

                

Some html HTML Ӓtutorial...
END

            '''

    parser = MyHTMLParser()

    parser.feed(html_code)

    parser.close()

    print(parser.data)

    print(parser.links)

你可能感兴趣的:(Python)