כיצד לעבוד עם ה-DOM ב-Python
Aspose.HTML קוד פתוח חופשי עבור מודלים של 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() כותב תכונות סימון; מחלקות ו-ids מניעים התאמה של 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 התכונה חייבת להיות מוגדרת לפני get_element_by_id() נקראת, והאלמנט חייב להיות מחובר לעץ המסמך.
קריאת תכונות מחזירה ערכים לא צפויים. get_attribute() מחזיר את מה שהוגדר לאחרונה עם set_attribute(); בדוק שגיאות כתיב בשמות התכונות — הם מחרוזות רגילות.
צמתים שנוצרו ממסמך אחר מתנהגים באופן שגוי. הצמתים מוגדרים ברמת המסמך. צור אותם דרך אותו Document, או העבר אותם באמצעות import_node()/adopt_node().
שאלות נפוצות
אילו סוגי צמתים יכול המסמך ליצור?
אלמנטים, צמתי טקסט, תגובות, וקטעי מסמך — באמצעות create_element(), create_text_node(), create_comment(), ו-create_document_fragment().
איך אני מזיז או מסיר צמתים קיימים?
השתמש בפעולות Node: insert_before(), remove_child(), replace_child() ו-clone_node().
האם אני יכול לנתח סימון קיים במקום לבנות עצים ידנית?
כן — HTMLDocument.parse() עבור דפים ו-HTMLDocument.parse_fragment() עבור קטעי קוד מייצרים את אותו סוג של עץ.