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