คลาส HTMLParser ที่กำหนดไว้ในโมดูลนี้มีฟังก์ชันในการแยกวิเคราะห์เอกสาร HTML และ XHMTL คลาสนี้มีเมธอดตัวจัดการที่สามารถระบุแท็ก ข้อมูล ความคิดเห็น และองค์ประกอบ HTML อื่นๆ ได้
เราต้องกำหนดคลาสใหม่ที่สืบทอดคลาส HTMLParser และส่งข้อความ HTML โดยใช้วิธี feed()
from html.parser import HTMLParser class parser(HTMLParser): pass p = parser() p.feed('<a href = "www.tutorialspoint.com"></a>')
เราต้องแทนที่วิธีการดังต่อไปนี้
handle_starttag(tag, attrs):
โดยปกติแท็ก HTML จะอยู่ในคู่ของแท็กเริ่มต้นและแท็กสิ้นสุด เช่น
และ วิธีนี้เรียกว่าการจัดการการเริ่มต้นของแท็กชื่อของแท็กแปลงเป็นตัวพิมพ์เล็ก อาร์กิวเมนต์ attrs หมายถึงแอตทริบิวต์ที่พบในวงเล็บ <> ของแท็ก
ตัวอย่างเช่น สำหรับแท็ก จะถูกป้อนไปยังอ็อบเจ็กต์ parser
from html.parser import HTMLParser class parser(HTMLParser): def handle_starttag(self, tag, attrs): print("Start tag:", tag) for attr in attrs: print(" attr:", attr) p = parser() p.feed('<a href = "www.tutorialspoint.com">')
ผลลัพธ์
Start tag: a attr: ('href', 'www.tutorialspoint.com') handle_endtag(tag):
วิธีนี้เรียกว่าการจัดการแท็กปิดขององค์ประกอบ
def handle_endtag(self, tag): print ("end tag",tag) handle_data(data):
วิธีนี้เรียกว่าการประมวลผลข้อมูลโดยพลการระหว่างแท็ก ตัวอย่างเช่น:
def handle_data(self, data): print (data) p = parser() html = ''' <html> <body> <h1>Tutorialspoint</h1> <b>Python standard library</b> <p>HTML module</p> </body> </html>''' p.feed(html)
ผลลัพธ์
Start tag: h1 Tutorialspoint end tag h1 Start tag: b Python standard library end tag b Start tag: p HTML module end tag p
วิธีการอื่นๆ ในคลาส HTMLParser มีดังนี้:
get_starttag_text()
ส่งคืนข้อความของแท็กเริ่มต้นที่เพิ่งเปิดล่าสุด
getpos()
ส่งคืนหมายเลขบรรทัดปัจจุบันและออฟเซ็ต
handle_startendtag(แท็ก, attrs)
คล้ายกับ handle_starttag() แต่ถูกเรียกเมื่อ parser พบแท็กว่างสไตล์ XHTML ()
handle_comment(ข้อมูล)
เมธอดนี้จะถูกเรียกเมื่อพบความคิดเห็น (เช่น )