Computer >> Máy Tính >  >> Lập trình >> Python

Hỗ trợ ngôn ngữ đánh dấu siêu văn bản bằng Python?

Python có khả năng xử lý các tệp HTML thông qua lớp HTMLParser trong mô-đun html.parser. Nó có thể phát hiện bản chất của các thẻ HTML, vị trí của chúng và nhiều thuộc tính khác của các thẻ. Nó có các chức năng cũng có thể xác định và tìm nạp dữ liệu có trong tệp HTML.

Trong ví dụ dưới đây, chúng ta sẽ thấy cách sử dụng lớp HTMLParser để tạo lớp phân tích cú pháp tùy chỉnh chỉ có thể xử lý các thẻ và dữ liệu mà chúng tôi xác định trong lớp. Ở đây, chúng tôi đang xử lý thẻ bắt đầu, thẻ kết thúc và dữ liệu.

Dưới đây là html đang được xử lý bởi trình phân tích cú pháp tùy chỉnh python.

Ví dụ

<html>
<br>
<head>
<br>
<title>welcome to Tutorials Point!</title>
<br>
</head>
<br>
<body>
<br>
<h1>Learn anything !</h1>
<br>
</body>
<br>
</html>

Dưới đây là chương trình phân tích cú pháp tệp ở trên và sau đó xuất ra kết quả theo trình phân tích cú pháp tùy chỉnh.

Ví dụ

from html.parser import HTMLParser
import io
class Custom_Parser(HTMLParser):
   def handle_starttag(self, tag, attrs):
      print("Line and Offset ==", HTMLParser.getpos(self))
      print("Encountered a start tag:", tag)


   def handle_endtag(self, tag):
      print("Line and Offset ==", HTMLParser.getpos(self))
      print("Encountered an end tag :", tag)


   def handle_data(self, data):
      print("Line and Offset ==", HTMLParser.getpos(self))
      print("Encountered some data :", data)

parser = Custom_Parser()

stream = io.open("E:\\test.html", "r")
parser.feed(stream.read())

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Line and Offset == (1, 0)
Encountered a start tag: html
Line and Offset == (1, 6)
Encountered some data :

Line and Offset == (2, 0)
Encountered a start tag: head
Line and Offset == (2, 6)
Encountered some data :

Line and Offset == (3, 0)
Encountered a start tag: title
Line and Offset == (3, 7)
Encountered some data : welcome to Tutorials Point!
Line and Offset == (3, 34)
Encountered an end tag : title
Line and Offset == (3, 42)
Encountered some data :

Line and Offset == (4, 0)
Encountered an end tag : head
Line and Offset == (4, 7)
Encountered some data :

Line and Offset == (5, 0)
Encountered a start tag: body
Line and Offset == (5, 6)
Encountered some data :

Line and Offset == (6, 0)
Encountered a start tag: h1
Line and Offset == (6, 4)
Encountered some data : Learn anything !
Line and Offset == (6, 20)
Encountered an end tag : h1
Line and Offset == (6, 25)
Encountered some data :

Line and Offset == (7, 0)
Encountered an end tag : body
Line and Offset == (7, 7)
Encountered some data :

Line and Offset == (8, 0)
Encountered an end tag : html