سوالات متداول
مجوزدهی و منبع باز
مجوز Aspose.HTML FOSS برای Python چیست؟
کتابخانه تحت مجوز MIT منتشر شده است. متن کامل به عنوان LICENSE فایل در مخزن GitHub.
آیا میتوانم از آن در محصولات تجاری استفاده کنم؟
بله. مجوز MIT اجازهٔ استفاده تجاری، تغییر، توزیع مجدد و اعطای مجوز فرعی را میدهد. تنها شرط این است که اعلان حق کپیرایت و متن مجوز را همراه با نسخههای قابل توجه حفظ کنید.
نصب و پیشنیازها
چگونه کتابخانه را نصب کنم و کدام نسخههای Python پشتیبانی میشوند؟
با git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git نصب کنید. این کتابخانه به Python نسخه 3.10 یا بالاتر نیاز دارد؛ نسخه جاری 0.1.0 است.
آیا وابستگیهای بومی وجود دارد؟
نه. پیادهسازی کاملاً Python است — بدون موتور مرورگر، بدون افزونههای کامپایلشده — بنابراین به طور یکسان بر روی ویندوز، لینوکس و macOS عمل میکند، از جمله اجراهای CI و کانتینرها.
API Usage
چگونه HTML را به یک سند تجزیه کنم؟
از HTMLDocument.parse() برای صفحات کامل یا HTMLDocument.parse_fragment() برای نشانهگذاری جزئی استفاده کنید. برای ساخت برنامهنویسی، Document کارخانه گره است:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)چگونه CSS را اعمال کنم و سبک حاصل را بخوانم؟
متن شیوهنامه را با CSSStyleSheet.replace_sync() تجزیه کنید، آن را با Document.attach_style_sheet() پیوست کنید، و نتیجه حلشده را با Element.get_computed_style() بخوانید:
from aspose_html.cssom import CSSStyleSheet
sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))آیا سلسلهمراتبی، خاصیتسازگی و !important را بهدرستی مدیریت میکند؟
بله. مقادیر محاسبهشده بر حسب خاصیتسازگی سلکتور (ID نسبت به کلاس برتری دارد و کلاس نسبت به نوع) عمل میکنند، اعلانهای درونخطی بر قوانین نویسنده ارجحیت دارند، و قوانین نویسنده !important بر اعلانهای درونخطی بدون !important ارجحیت دارند. وراثت از والد به فرزند برای ویژگیهای قابل وراثت جریان دارد.
آیا میتوانم بهصورت مستقیم از tokenizer و tree builder استفاده کنم؟
بله — Tokenizer.tokenize() جریان توکن استانداردها را تولید میکند، TreeBuilder.run() ساخت درخت را انجام میدهد، و parse_html() تمام خط لوله را در یک فراخوانی میپیچد.
چگونه با URLها و رمزگذاریهای کاراکتر کار کنم؟
URL.parse() و URL.can_parse() مدیریت URL به-سبک WHATWG را با URLSearchParams برای رشتههای پرسوجو فراهم میکنند. برای بایتهای خام، detect_encoding() رمزگذاری، سطح اطمینان و متن رمزگشاییشده را برمیگرداند.
محدودیتهای شناختهشده
آیا APIهایی وجود دارند که موجود هستند اما پیادهسازی نشدهاند؟
تعداد کمی از اعضا اعلام شدهاند اما در حال حاضر کارکردی ندارند، از جمله CSSRule.type، CSSRule.css_text و HTMLImageElement.decode. فایل limitations.md در مدل دانش این موارد را پیگیری میکند؛ از اتکا به آنها پرهیز کنید.
آیا کتابخانه صفحات را رندر میکند یا به فرمتهای دیگر تبدیل میشود؟
خیر. نسخهٔ فعلی بر تجزیه، دستکاری DOM، محاسبهٔ سبک CSS، ساختارهای چیدمان، URLها و رمزگذاریها متمرکز است. تبدیل فرمت یا رندر تصویر/PDF ارائه نمیدهد.
آیا JavaScript بهصورت خودکار در هنگام تجزیه اجرا میشود؟
خیر. تجزیه هرگز اسکریپتها را اجرا نمیکند. ارزیابی اسکریپت بهصورت صریح و با پذیرش از طریق JSContext انجام میشود، و بارگذاری ماژول توسط ModuleRegistry و ModuleLoadPolicy کنترل میشود.