html.parser — Python中的简单HTML和XHTML解析器
此模块中定义的HTMLParser类提供了解析HTML和XHMTL文档的功能。此类包含可以标识标签,数据,注释和其他HTML元素的处理程序方法。
我们必须定义一个继承HTMLParser类的新类,并使用feed()方法提交HTML文本。
from html.parser import HTMLParser
class parser(HTMLParser):
pass
p = parser()p.feed('<a href = "www.nhooo.com"></a>')我们必须重写其以下方法
handle_starttag(tag, attrs):
HTML标记通常是成对的开始标记和结束标记。例如<head>和</head>。调用此方法来处理标签的开始。
标签名称转换为小写。attrs参数代表在标签的<>括号内找到的属性。
例如,对于标签<ahref="www.nhooo.com"></a>,将其馈送到解析器对象。
from html.parser import HTMLParser
class parser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("开始标签:", tag)
for attr in attrs:
print(" attr:", attr)
p = parser()p.feed('<a href = "www.nhooo.com">')输出结果
开始标签: a
attr: ('href', 'www.nhooo.com')
handle_endtag(tag):调用此方法来处理元素的结束标记。
def handle_endtag(self, tag):
print ("end tag",tag)
handle_data(data):调用此方法来处理标签之间的任意数据。例如:
def handle_data(self, data):
print (data)
p = parser()html = '''
<html>
<body>
<h1>Nhooo</h1>
<b>Python standard library</b>
<p>HTML module</p>
</body>
</html>'''
p.feed(html)输出结果
开始标签: h1 Nhooo end tag h1 开始标签: b Python standard library end tag b 开始标签: p HTML module end tag p
HTMLParser类中的其他方法如下:
get_starttag_text()
返回最近打开的开始标签的文本。
getpos()
返回当前行号和偏移量。
handle_startendtag(标签,属性)
与handle_starttag()类似,但是在解析器遇到XHTML样式的空标记(<img.../>)时调用。
handle_comment(数据)
遇到评论时(例如<!-comment->),将调用此方法。