نحوه کار با DOM در Python
Aspose.HTML FOSS برای مدلهای Python HTML به عنوان یک DOM مبتنی بر استاندارد: Document گرهها را ایجاد میکند، Element ویژگیها را مدیریت میکند، و Node عملیات درخت را فراهم میکند. این راهنما یک درخت کوچک میسازد و ساختار آن را بازمیخواند، با استفاده از pip برای نصب.
راهنمای گام به گام
گام ۱: نصب بسته
نصب بسته:
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مرحله ۲: وارد کردن کلاسهای مورد نیاز
from aspose_html.dom import Documentمرحله ۳: ایجاد یک سند و یک عنصر
Document کارخانه گره است؛ create_element() یک عنصر جدید برمیگرداند که با append_child() به آن وصل میشوید:
doc = Document()
el = doc.create_element("div")
doc.append_child(el)مرحله ۴: تنظیم ویژگیها
set_attribute() ویژگیهای مارکاپ را مینویسد؛ کلاسها و شناسهها تطبیق CSS بعدی را هدایت میکنند:
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")مرحله ۵: بازخوانی ساختار
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().
سوالات متداول
سند (Document) چه نوع گرههایی را میتواند ایجاد کند؟
عناصر، گرههای متن، نظرات و تکههای سند — از طریق create_element()، create_text_node()، create_comment() و create_document_fragment().
چگونه میتوانم گرههای موجود را منتقل یا حذف کنم؟
از عملیات Node استفاده کنید: insert_before()، remove_child()، replace_child() و clone_node().
آیا میتوانم بهجای ساخت درختها بهصورت دستی، نشانهگذاری موجود را تجزیه کنم؟
بله — HTMLDocument.parse() برای صفحات و HTMLDocument.parse_fragment() برای اسنیپتها همان نوع درخت را تولید میکنند.