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