วิธีทำงานกับ DOM ใน Python
Aspose.HTML FOSS สำหรับโมเดล Python HTML ในฐานะ DOM ที่อิงมาตรฐาน: Document สร้างโหนด, Element จัดการแอตทริบิวต์, และ Node ให้การดำเนินการต้นไม้. คู่มือนี้สร้างต้นไม้ขนาดเล็กและอ่านโครงสร้างกลับมา, โดยใช้ pip เพื่อติดตั้ง.
คู่มือขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ
ติดตั้งแพ็กเกจ:
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .จากนั้นยืนยันเมตาดาทาของแพ็กเกจ:
pip show aspose-html-fossขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
from aspose_html.dom import Documentขั้นตอนที่ 3: สร้างเอกสารและองค์ประกอบ
Document คือโรงงานโหนด; create_element() คืนค่าองค์ประกอบใหม่ที่คุณแนบด้วย append_child():
doc = Document()
el = doc.create_element("div")
doc.append_child(el)ขั้นตอนที่ 4: ตั้งค่าแอตทริบิวต์
set_attribute() เขียนแอตทริบิวต์มาร์คอัป; คลาสและไอดีเป็นตัวขับเคลื่อนการจับคู่ CSS ในภายหลัง:
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")ขั้นตอนที่ 5: อ่านโครงสร้างกลับ
get_element_by_id() ดึงเอาองค์ประกอบ, get_attribute() คืนค่าแอตทริบิวต์ของมัน, และ has_child_nodes() ยืนยันโครงสร้าง:
found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())ปัญหาทั่วไปและการแก้ไข
การค้นหาด้วย id ไม่ได้คืนค่าอะไรเลย. ขององค์ประกอบ id ต้องตั้งค่า attribute ก่อน get_element_by_id() ถูกเรียกใช้ และองค์ประกอบต้องถูกแนบเข้ากับต้นไม้ของเอกสาร.
การอ่าน attribute คืนค่าที่ไม่คาดคิด. get_attribute() คืนค่าที่ตั้งไว้ล่าสุดโดย set_attribute(); ตรวจสอบการพิมพ์ผิดในชื่อ attribute — พวกมันเป็นสตริงธรรมดา.
โหนดที่สร้างจากเอกสารอื่นทำงานผิดปกติ. Nodes เป็นแบบจำกัดในเอกสาร. สร้างพวกมันผ่านวิธีเดียวกัน Document, หรือโอนย้ายพวกมันด้วย import_node()/adopt_node().
คำถามที่พบบ่อย
Document สามารถสร้างประเภทโหนดอะไรได้บ้าง?
องค์ประกอบ, โหนดข้อความ, คอมเมนต์, และส่วนย่อยของเอกสาร — ผ่าน create_element(), create_text_node(), create_comment(), และ create_document_fragment().
ฉันจะย้ายหรือเอาโหนดที่มีอยู่ออกได้อย่างไร?
ใช้การดำเนินการ Node: insert_before(), remove_child(), replace_child() และ clone_node().
ฉันสามารถแยกวิเคราะห์มาร์กอัปที่มีอยู่แทนการสร้างต้นไม้ด้วยตนเองได้หรือไม่?
ใช่ — HTMLDocument.parse() สำหรับหน้าและ HTMLDocument.parse_fragment() สำหรับส่วนย่อยให้ผลลัพธ์เป็นต้นไม้ประเภทเดียวกัน.