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.tutorialspoint.com"></a>')

我们必须覆盖其以下方法

handle_starttag(tag, attrs):

HTML 标签通常成对出现,即开始标签和结束标签。例如 <head> 和 </head>。此方法用于处理标签的开始。

转换为小写的标签名称。attrs 参数代表在标签的 <> 括号内找到的属性。

例如,对于标签 <a href = "www.tutorialspoint.com"></a>,被馈送到解析器对象。

from html.parser import HTMLParser
class parser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
p = parser()
p.feed('<a href = "www.tutorialspoint.com">')

输出

Start tag: a
attr: ('href', 'www.tutorialspoint.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>Tutorialspoint</h1>
      <b>Python standard library</b>
      <p>HTML module</p>
   </body>
</html>'''
p.feed(html)

输出

Start tag: h1
Tutorialspoint
end tag h1
Start tag: b
Python standard library
end tag b
Start tag: p
HTML module
end tag p

HTMLParser 类中的其他方法如下

get_starttag_text()

返回最近打开的开始标签的文本。

getpos()

返回当前行号和偏移量。

handle_startendtag(tag, attrs)

类似于 handle_starttag(),但在解析器遇到 XHTML 样式的空标签 (<img ... />) 时调用。

handle_comment(data)

当遇到注释时调用此方法(例如 <!--comment-->)。

更新于: 2019-07-30

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告