Python มีความสามารถในการประมวลผลไฟล์ HTML ผ่านคลาส HTMLParser ในโมดูล html.parser สามารถตรวจจับลักษณะของแท็ก HTML ตำแหน่งและคุณสมบัติอื่น ๆ ของแท็กได้ มีฟังก์ชันที่สามารถระบุและดึงข้อมูลที่มีอยู่ในไฟล์ HTML ได้
ในตัวอย่างด้านล่าง เราเห็นวิธีใช้คลาส HTMLParser เพื่อสร้างคลาส parser แบบกำหนดเอง ซึ่งสามารถประมวลผลแท็กและข้อมูลที่เรากำหนดในคลาสเท่านั้น เรากำลังประมวลผลแท็กเริ่มต้น แท็กสิ้นสุด และข้อมูล
ด้านล่างนี้คือ html ที่ได้รับการประมวลผลโดยโปรแกรมแยกวิเคราะห์ที่กำหนดเองของ python
ตัวอย่าง
<html> <br> <head> <br> <title>welcome to Tutorials Point!</title> <br> </head> <br> <body> <br> <h1>Learn anything !</h1> <br> </body> <br> </html>
ด้านล่างนี้คือโปรแกรมที่ parser ไฟล์ด้านบนแล้วส่งออกผลลัพธ์ตาม parser ที่กำหนดเอง
ตัวอย่าง
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())
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
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