4、HTMLParser

常见方法与属性

方法

属性

例子

from html.parser import HTMLParser
# 集成HTMLParser,重写方法
class MyHtmlParser(HTMLParser):
    def handle_starttag(self,tag,attrs):
        "开始标签"
        print('%s标签开始' % tag)
        print('%s标签属性:%s' % (tag,attrs))

    def handle_endtag(self, tag):
        "处理结束标签"
        print('%s标签结束' % tag)

    def handle_startendtag(self, tag, attrs):
        "处理自闭和标签"
        print('%s自闭和标签' % tag)
        print('%s标签属性:%s' % (tag,attrs))

    def handle_data(self, data):
        "处理标签间数据"
        print('%s标签间数据为:%s' % (self.lasttag,data))

    def handle_comment(self, data):
        "处理注释"
        print('注释:%s' % data)

    def handle_entityref(self, name):
        print('&%s;' % name)
 
    def handle_charref(self, name):
        print('&#%s;' % name)

html = """
<html>
    <-- 这是注释 -->
    <head>这是头标签</head>
    <body>
        <!-- test html parser -->
        <p>Some <a href=\"#\">html</a> HTML&nbsp;&#1234; Ӓtutorial...<br>END</p>
    </body>
</html>
"""

#解析html字符串
p = MyHtmlParser()
p.feed(html)
#关闭解析
p.close()

转义字符

用 Python 来处理转义字符串有多种方式,而且 py2 和 py3 中处理方式不一样,在 python2 中,反转义串的模块是 HTMLParser。

# python2
import HTMLParser
a = HTMLParser().unescape('&lt;abc&gt;')
print(a)
'''
<abc>;
'''

Python3 HTMLParser 模块迁移到了 html.parser

# python3
from html.parser import HTMLParser
a = HTMLParser().unescape('&lt;abc&gt;')
print(a)
'''
<abc>;
'''

到 python3.4 以后的版本,在 html 模块新增了 unescape 方法

# python3.4
import html
a = html.unescape('&lt;abc&gt;')
print(a)
'''
<abc>;
'''