كيفية تحليل HTML في Python
Aspose.HTML FOSS for 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 عادية — تنطبق نفس واجهات البحث والخصائص. بناء البنية المكافئة برمجياً يُظهر السطح المشترك:
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: المتابعة مع الأنماط أو البنية
أرفق أوراق الأنماط واقرأ الأنماط المحسوبة، أو استخدم مساعدات الإدراج Element (insert_adjacent_html()، insert_adjacent_text()) للتعديلات المحلية — مخرجات التحليل تغذي كل طبقة أخرى.
المشكلات الشائعة والحلول
يضيف الترميز الجزئي أغلفة html و body. parse() يطبق قواعد المستند الكامل؛ استخدم parse_fragment() للمقاطع.
يتم تحليل الترميز المشوه دون أخطاء. هذا هو سلوك المعايير — إن بناء الشجرة يحدد الاسترداد لكل حالة خطأ بدلاً من رفعها.
يظهر محتوى الجدول خارج جدوله. رعاية المحتوى الجدولي غير المتموضع هي جزء من الخوارزمية؛ أصلح تعشيق المصدر.
الأسئلة المتكررة
هل العناصر المُحللة مُعرفة نوعياً؟
نعم — ينتج التحليل التسلسل الهرمي HTMLElement: عناصر التحكم في النماذج (HTMLFormElement، HTMLInputElement)، المحتوى المدمج (HTMLImageElement، HTMLCanvasElement)، التنقل (HTMLAnchorElement)، وأكثر.
هل يمكنني التحكم في خط أنابيب التحليل على مستوى أدنى؟
نعم — Tokenizer وTreeBuilder عامان، مع parse_html() كغلاف استدعاء واحد.
هل ينفّذ التحليل النصوص البرمجية؟
لا. تقييم النص البرمجي صريح ومفصول عبر JSContext.