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参数代表在标签的<>括号内找到的属性。

例如,对于标签<a href = "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->),将调用此方法。