Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

html.parser — ตัวแยกวิเคราะห์ HTML และ XHTML อย่างง่ายใน Python


คลาส 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 (html.parser — ตัวแยกวิเคราะห์ HTML และ XHTML อย่างง่ายใน Python )

handle_comment(ข้อมูล)

เมธอดนี้จะถูกเรียกเมื่อพบความคิดเห็น (เช่น )