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-->)。