איך לנתח HTML ב Python
Aspose.HTML FOSS עבור Python מנתח סימון באמצעות אלגוריתם בניית העץ הסטנדרטי: HTMLDocument.parse() לעמודים שלמים, HTMLDocument.parse_fragment() לחלקים, ומחלקות אלמנטים טיפוסיים (HTMLElement והמחלקות המשניות שלו) בתוצאה. מדריך זה מכסה את נקודות הכניסה לניתוח ומאמת את הפלט דרך ה-DOM, באמצעות 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 .שלב 2: ייבוא המחלקות הדרושות
from aspose_html.html_document import HTMLDocument
from aspose_html.dom import Documentשלב 3: בחירת נקודת הכניסה הנכונה לניתוח
HTMLDocument.parse() מריץ בניית עץ מסמך מלא עם התאוששות משגיאות לפי התקנים; HTMLDocument.parse_fragment() מיישם אלגוריתם קטע למארקאפ חלקי; HTMLDocument.load() קורא ממקור. האלמנטים שפורסמו מגיעים עם טיפוס — <a> הוא HTMLAnchorElement, <input> הוא HTMLInputElement.
שלב 4: אמת את הפלט דרך ה-DOM
התוצאה המפוענחת היא עץ DOM רגיל — אותם API לחיפוש ולתכונות חלים. בניית המבנה השווה בתוכנית מציגה את המשטח המשותף:
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "content")
doc.append_child(el)
print(doc.get_element_by_id("content").has_child_nodes())שלב 5: המשך עם סגנונות או מבנה
צור קבצי CSS וקרא סגנונות מחושבים, או השתמש בעוזרי ההכנסה של Element (insert_adjacent_html(), insert_adjacent_text()) לעריכות ממוקדות — פלט הפירוש מזין כל שכבה אחרת.
בעיות נפוצות ותיקונים
סימון חלקי מקבל עטיפות html ו-body. parse() מחיל כללי מסמך מלא; השתמש parse_fragment() לקטעי קוד.
סימון פגום מתפרש ללא שגיאות. זהו התנהגות לפי הסטנדרטים — בניית העץ מגדירה התאוששות עבור כל מקרה של שגיאה במקום לזרוק שגיאה.
תוכן הטבלה מופיע מחוץ לטבלה שלו. הקצאת foster להורה לתוכן טבלה ממוקם במקום שגוי היא חלק מהאלגוריתם; תקן את הקינון במקור.
שאלות נפוצות
האם אלמנטים שמפורסים מקוטלגים?
כן — הפירסור מייצר את ההיררכיה HTMLElement: בקרי טפסים (HTMLFormElement, HTMLInputElement), תוכן משובץ (HTMLImageElement, HTMLCanvasElement), ניווט (HTMLAnchorElement), ועוד.
האם אני יכול לשלוט בצינור הפירסור ברמה נמוכה יותר?
כן — ה-Tokenizer וה-TreeBuilder הם ציבוריים, כאשר parse_html() הוא העטיפה בקריאה אחת.
האם הפירסור מריץ סקריפטים?
לא. הערכת הסקריפט היא מפורשת ונפרדת דרך JSContext.