1. محصولات
  2.   Aspose.HTML
  3.   Aspose.HTML FOSS for Python

Aspose.HTML FOSS برای Python

HTML را به یک DOM مبتنی بر استاندارد تجزیه کنید، CSS را اعمال کنید و سبک‌ها را از Python محاسبه کنید — رایگان، متن باز و خالص Python.

کتابخانه متن باز Python برای پردازش HTML

Aspose.HTML FOSS for Python یک کتابخانهٔ رایگان و متن‌باز برای کار با اسناد HTML در برنامه‌های Python است. آن را با یک فرمان git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git نصب کنید و شروع به تجزیهٔ نشانه‌گذاری به یک مدل شیء سند، ساخت و اصلاح درخت‌های عنصر، پیوستن به سبک‌نامه‌های CSS، حل استایل‌های محاسبه‌شده، و کار با URLها و رمزگذاری‌های کاراکتر کنید — همه این‌ها در Python خالص و بدون وابستگی به مرورگر.

کتابخانه یک API مبتنی بر استانداردها را که حول HTMLDocument، Document، Element و CSSStyleSheet ساخته شده است، در اختیار می‌گذارد. با HTMLDocument.parse() نشانه‌گذاری را تجزیه کنید، گره‌ها را با Document.create_element() و append_child() ایجاد و وصل کنید، عناصر را با get_element_by_id() پیدا کنید، آن‌ها را از طریق CSSStyleSheet.replace_sync() و اعلان style در سطح عنصر استایل دهید، و نتیجه را با Element.get_computed_style() بخوانید. بلوک‌های ساختاری سطح پایین — HTML Tokenizer، TreeBuilder، URL و URLSearchParams به سبک WHATWG، و تشخیص‌گر جریان بایت detect_encoding() — زمانی که به کنترل مستقیم نیاز دارید در دسترس هستند.

Aspose.HTML FOSS تحت مجوز MIT منتشر شده و به‌صورت خالص Python پیاده‌سازی شده است و به Python 3.10 یا بالاتر نیاز دارد. این کتابخانه به‌طور یکسان بر روی ویندوز، لینوکس و macOS اجرا می‌شود — شامل اجراکنندگان CI، کانتینرهای Docker و محیط‌های بدون سرور. برای مجموعه محصولات سازمانی، به Aspose.HTML — Enterprise Product Family مراجعه کنید.

HTML تجزیه و دستکاری DOM

  • صفحات کامل را با HTMLDocument.parse() یا قطعات را با HTMLDocument.parse_fragment() تجزیه کنید
  • اسناد را به‌صورت برنامه‌نویسی با Document.create_element() و append_child() بسازید
  • گره‌ها را با Document.get_element_by_id() پیدا کنید و ویژگی‌های نشانه‌گذاری را از طریق Element.get_attribute() بخوانید
  • ویژگی‌ها را با Element.set_attribute() تنظیم کنید و متن را از طریق Node.text_content اختصاص دهید
  • هر زیرشاخه‌ای را با تابع serialise() به نشانه‌گذاری بازگردانید

چه کسانی از پردازش DOM استفاده می‌کنند

  • سرویس‌های پس‌زمینه که HTML ارسالی توسط کاربر را قبل از ذخیره‌سازی پاک‌سازی یا بازنویسی می‌کنند
  • خطوط لوله محتوا که قطعات صفحه را در مقیاس بزرگ استخراج یا بازساختار می‌کنند
  • مجموعه‌های تست که در CI ساختار نشانه‌گذاری تولید‌شده را تأیید می‌کنند

CSS شیوه‌نامه‌ها و سبک‌های محاسبه‌شده

  • متن شیوه‌نامه را با CSSStyleSheet.replace_sync() تجزیه کنید و آن را از طریق Document.attach_style_sheet() پیوست کنید
  • اعلان‌های درون‌خطی را از طریق ویژگی style عنصر با CSSStyleDeclaration.set_property() تنظیم کنید
  • سلسله‌وار را — اختصاصیت، قوانین درون‌خطی در مقابل نویسنده، و وراثت — با Element.get_computed_style() حل کنید
  • مقادیر حل‌شده را با CSSStyleDeclaration.get_property_value() بخوانید

چه کسی از محاسبهٔ سبک استفاده می‌کند

  • ابزارهای ایمیل و خبرنامه‌ای که قبل از ارسال، سبک‌های مؤثر را تأیید می‌کنند
  • HTML تمیز‌کننده‌ها که نیاز دارند سبک واقعی عنصر رندر شده را بدانند
  • توسعه‌دهندگانی که رفتار آبشاری و خاصیت‌خصوصی را خارج از مرورگر دیباگ می‌کنند

توکن‌ساز و ساخت درخت

  • مستقیماً توکنایزر HTML را با Tokenizer.tokenize() یا Tokenizer.tokenize_fragment() راه‌اندازی کنید
  • ساختار درختی مبتنی بر استانداردها را با TreeBuilder.run() اجرا کنید
  • نشانه‌گذاری را به‌صورت مستقیم به یک درخت با تابع parse_html() تجزیه کنید

چه کسانی از تجزیه‌تحلیل سطح پایین استفاده می‌کنند

  • ابزارهای لینتر و تجزیه‌گر که جریان‌های توکن را به‌جای درخت‌های نهایی بررسی می‌کنند
  • ابزارهایی که در هنگام بازیابی نشانه‌گذاری خراب به مدیریت خطای سفارشی نیاز دارند
  • پروژه‌های آموزشی که نحوه کار تجزیه HTML مبتنی بر استانداردها را مطالعه می‌کنند

آدرس‌های اینترنتی و رمزگذاری‌های کاراکتر

  • آدرس‌های URL را با URL.parse() و URL.can_parse() تجزیه و اعتبارسنجی کنید
  • رشته‌های پرس‌وجو را با URLSearchParams بخوانید و ویرایش کنید — append(), get(), has(), delete()
  • رمزگذاری‌های بایت‌استریم (BOM و تشخیص محتوا) را با detect_encoding() شناسایی کنید
  • برچسب‌های رمزگذاری را به نام‌های استاندارد با get_canonical_name() نرمال‌سازی کنید

چه کسی از ابزارهای URL و رمزگذاری استفاده می‌کند

  • خزنده‌ها و واکشی‌کننده‌هایی که باید URLها را به‌صورت قابل اعتماد حل و تکرار حذف (dedupe) کنند
  • خطوط لوله‌ی ورود داده که اسناد قدیمی با رمزگذاری‌های ترکیبی را پردازش می‌کنند
  • سرویس‌هایی که پارامترهای کوئری را به‌صورت سرور-ساید تجزیه یا بازنویسی می‌کنند

ساخت یک DOM و حل CSS Cascade

یک سند ایجاد کنید، یک stylesheet الصاق کنید، و سبک محاسبه‌شده را بخوانید — انتخابگر ID بر قانون کلاس برتری دارد:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))

استایل‌های درون‌خطی اولویت دارند

اعلان‌های درون‌خطی نسبت به قواعد stylesheet نویسنده خاصیت بالاتری دارند:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

تشخیص رمزگذاری کاراکتر از بایت‌ها

کدگذاری یک جریان بایت خام را (شامل BOM) تشخیص داده و متن رمزگشایی‌شده را دریافت کنید:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

سوالات متداول

مجوز Aspose.HTML FOSS for Python چیست؟

مجوز MIT — استفاده تجاری، تغییر و توزیع مجدد همه مجاز هستند؛ تنها شرط این است که اطلاعیه حق تکثیر را در کپی‌های قابل توجه حفظ کنید.

کدام نسخه‌های Python پشتیبانی می‌شوند و چگونه می‌توانم آنها را نصب کنم؟

Python 3.10 یا بعداً. با git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git نصب کنید — پیاده‌سازی کاملاً Python است و هیچ وابستگی بومی ندارد.

چگونه می‌توانم HTML را به یک سند تجزیه کنم؟

از HTMLDocument.parse() برای صفحات کامل یا HTMLDocument.parse_fragment() برای نشانه‌گذاری جزئی استفاده کنید؛ Document کارخانه‌ای برای ساخت درخت‌ها به‌صورت برنامه‌نویسی است.

آیا زنجیرهٔ CSS specificity و !important را به‌درستی مدیریت می‌کند؟

بله — مقادیر محاسبه‌شده بر اساس اختصاص‌پذیری سلکتور عمل می‌کنند، اعلان‌های درون‌خطی نسبت به قواعد نویسنده برتری دارند، قواعد نویسنده !important نسبت به اعلان‌های درون‌خطی غیر مهم برتری دارند، و وراثت از والد به فرزند جریان دارد.

آیا کتابخانه صفحات را رندر می‌کند یا به فرمت‌های دیگر تبدیل می‌شود؟

نه. نسخهٔ فعلی بر تجزیه، دست‌کاری DOM، محاسبهٔ سبک CSS، ساختارهای چیدمان، URLها و رمزگذاری‌ها متمرکز است — هیچ تبدیل فرمت یا رندر تصویر/PDF نیست.

آیا جاوااسکریپت به‌صورت خودکار در هنگام تجزیه اجرا می‌شود؟

نه. تجزیه هرگز اسکریپت‌ها را اجرا نمی‌کند؛ ارزیابی صریح و به-صورت opt-in از طریق JSContext با بارگذاری ماژول که توسط ModuleRegistry و ModuleLoadPolicy کنترل می‌شود.

  

منابع پشتیبانی و آموزش

 فارسی