איך לנתח HTML ב Python

איך לנתח 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.

ראה גם

 עברית