نحوه کار با DOM در Python

نحوه کار با 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() برای اسنیپت‌ها همان نوع درخت را تولید می‌کنند.

همچنین ببینید:

 فارسی