نحوه تجزیه HTML در Python
Aspose.HTML FOSS برای Python نشانهها را با الگوریتم استاندارد ساخت درخت تجزیه میکند: HTMLDocument.parse() برای صفحات کامل، HTMLDocument.parse_fragment() برای قطعات کد، و کلاسهای عنصر نوعی (HTMLElement و زیردستههای آن) در نتیجه. این راهنما نقاط ورودی تجزیه را پوشش میدهد و خروجی را از طریق DOM تأیید میکند، با استفاده از pip برای نصب.
راهنمای گام به گام
مرحله ۱: نصب بسته
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .مرحله ۲: وارد کردن کلاسهای مورد نیاز
from aspose_html.html_document import HTMLDocument
from aspose_html.dom import Documentمرحله ۳: انتخاب نقطه ورودی مناسب برای تجزیه
HTMLDocument.parse() ساخت درخت کامل سند را با بازیابی خطاهای استاندارد اجرا میکند؛ HTMLDocument.parse_fragment() الگوریتم تکه را برای نشانهگذاری جزئی اعمال میکند؛ HTMLDocument.load() از یک منبع میخواند. عناصر تجزیهشده بهصورت تایپشده میرسند — یک <a> یک HTMLAnchorElement است، یک <input> یک HTMLInputElement است.
مرحله ۴: خروجی را از طریق 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())مرحله ۵: ادامه با سبکها یا ساختار
برگههای سبک را الصاق کنید و سبکهای محاسبهشده را بخوانید، یا برای ویرایشهای بومی از کمککنندههای درج Element (insert_adjacent_html()، insert_adjacent_text()) استفاده کنید — خروجی تجزیه به هر لایهٔ دیگر تغذیه میکند.
مشکلات رایج و راهحلها
نشانهگذاری جزئی بستهبندیهای html و body را بهدست میآورد. parse() قواعد سند-کامل را اعمال میکند؛ استفاده کنید parse_fragment() برای قطعهها.
نشانهگذاری خراب بدون خطا تجزیه میشود. این رفتار استاندارد است — ساختار درختی، بازیابی را برای هر حالت خطا تعریف میکند نه اینکه خطا را پرتاب کند.
محتوای جدول خارج از جدول خود ظاهر میشود. پرورش والدگری محتوای جدولگذاری نادرست بخشی از الگوریتم است؛ تو درونگذاری منبع را اصلاح کنید.
سوالات متداول
آیا عناصر تجزیهشده دارای نوع هستند؟
بله — تجزیهکردن ساختار HTMLElement را تولید میکند: کنترلهای فرم (HTMLFormElement، HTMLInputElement)، محتوای توکار (HTMLImageElement، HTMLCanvasElement)، ناوبری (HTMLAnchorElement) و موارد دیگر.
آیا میتوانم خط لوله تجزیه را در سطح پایینتری کنترل کنم؟
بله — Tokenizer و TreeBuilder عمومیاند، و parse_html() بهعنوان wrapper تکفراخوانی عمل میکند.
آیا تجزیهکردن اسکریپتها را اجرا میکند؟
خیر. ارزیابی اسکریپت بهصورت صریح و جداگانه از طریق JSContext انجام میشود.