Python 中的超文本标记语言支持吗?

Python 具有通过html.parser模块中的 HTMLParser 类处理 HTML 文件的能力。它可以检测 HTML 标签的性质,它们的位置和标签的许多其他属性。它具有还可以识别和获取 HTML 文件中存在的数据的功能。

在下面的示例中,我们将看到如何使用 HTMLParser 类创建自定义解析器类,该类只能处理我们在类中定义的标签和数据。这里我们正在处理开始标签、结束标签和数据。

下面是由 python 自定义解析器处理的 html。

例子

<html>
<br>
<head>
<br>
<title>welcome to nhooo.com!</title>
<br>
</head>
<br>
<body>
<br>
<h1>Learn anything !</h1>
<br>
</body>
<br>
</html>

下面是解析上述文件然后根据自定义解析器输出结果的程序。

例子

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