html.parser — Python 中的简单 HTML 和 XHTML 解析器

pythonserver side programmingprogramming更新于 2023/12/23 3:09:00

此模块中定义的 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-->)。


相关文章