Python 中的超文本标记语言支持吗?
Python具有通过html.parser模块中的HTMLParser类处理HTML文件的能力。它可以检测HTML标签的性质,它们的位置和标签的许多其他属性。它具有还可以识别和获取HTML文件中存在的数据的功能。
在下面的示例中,我们将看到如何使用HTMLParser类创建自定义解析器类,该类只能处理我们在类中定义的标签和数据。这里我们正在处理开始标签、结束标签和数据。
下面是由python自定义解析器处理的html。
例子
welcome to nhooo.com!
Learn anything !
下面是解析上述文件然后根据自定义解析器输出结果的程序。
例子
fromhtml.parserimport HTMLParser import io class Custom_Parser(HTMLParser): def handle_starttag(self, tag, attrs): print("Line and Offset ==", HTMLParser.getpos(self)) print("遇到开始标签:", tag) def handle_endtag(self, tag): print("Line and Offset ==", HTMLParser.getpos(self)) print("遇到结束标签:", tag) def handle_data(self, data): print("Line and Offset ==", HTMLParser.getpos(self)) print("遇到一些资料:", data) parser = Custom_Parser() stream = io.open("E:\\test.html", "r") parser.feed(stream.read())
输出
运行上面的代码给我们以下结果-
Line and Offset == (1, 0) 遇到开始标签: html Line and Offset == (1, 6) 遇到一些资料: Line and Offset == (2, 0) 遇到开始标签: head Line and Offset == (2, 6) 遇到一些资料: Line and Offset == (3, 0) 遇到开始标签: title Line and Offset == (3, 7) 遇到一些资料: welcome to nhooo.com! Line and Offset == (3, 34) 遇到结束标签: title Line and Offset == (3, 42) 遇到一些资料: Line and Offset == (4, 0) 遇到结束标签: head Line and Offset == (4, 7) 遇到一些资料: Line and Offset == (5, 0) 遇到开始标签: body Line and Offset == (5, 6) 遇到一些资料: Line and Offset == (6, 0) 遇到开始标签: h1 Line and Offset == (6, 4) 遇到一些资料: Learn anything ! Line and Offset == (6, 20) 遇到结束标签: h1 Line and Offset == (6, 25) 遇到一些资料: Line and Offset == (7, 0) 遇到结束标签: body Line and Offset == (7, 7) 遇到一些资料: Line and Offset == (8, 0) 遇到结束标签: html