معرفی
Aspose.HTML FOSS برای Python یک کتابخانه منبع باز جدید برای کار با اسناد HTML در Python است. این کتابخانه علامتگذاری را به یک مدل شیء سند مبتنی بر استانداردها تجزیه میکند، به شما امکان میدهد درختهای عنصر را بهصورت برنامهنویسی ساخته و تغییر دهید، و CSS — شامل اختصاصیت، اعلانهای درونخطی، و ارثبری — را به سبکهای محاسبهشده که میتوانید از هر عنصر بخوانید — حل میکند.
این کتابخانه برای سناریوهای پسزمینه و ابزارسازی که مرورگر در دسترس نیست یا مورد نیاز نیست هدفگذاری شده است: سرویسهایی که HTML ذخیرهشده را پاکسازی میکنند، خطوط لولهای که قطعات صفحه را بازسازی میکنند، و مجموعههای آزمونی که بر علامتگذاری تولید شده ادعا میکنند. این کتابخانه از PyPI به عنوان aspose-html-foss نصب میشود، تحت مجوز MIT است، و بهصورت خالص Python برای Python نسخه 3.10 به بعد پیادهسازی شده است، بنابراین در ماشینهای توسعهدهنده، اجراهای CI و سرورها بهیکسان رفتار میکند.
فراتر از هسته DOM و CSS، این بسته بلوکهای ساخت عملیاتی را که پردازش HTML معمولاً بههرحال به آنها نیاز دارد، ارائه میدهد: یک توکنساز و سازنده درخت HTML که میتوانید بهصورت مستقیم هدایت کنید، کلاسهای URL و URLSearchParams به سبک WHATWG، و یک تشخیصدهنده رمزگذاری جریان بایت.
موارد موجود
ساخت و اصلاح DOM
لایه DOM دور Document، Element و Node ساخته شده است. عناصر را با Document.create_element() ایجاد کنید، آنها را با append_child() به هم متصل کنید، ویژگیهای علامتگذاری را با Element.set_attribute() تنظیم کنید، و گرهها را دوباره با Document.get_element_by_id() پیدا کنید. صفحات کامل و قطعات از طریق HTMLDocument.parse() و HTMLDocument.parse_fragment() تجزیه میشوند.
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
اعمال شیوهنامهها و خواندن سبکهای محاسبهشده
CSSStyleSheet.replace_sync() متن شیوهنامه را تجزیه میکند، Document.attach_style_sheet() آن را به کار میگیرد، و Element.get_computed_style() سلسلهمراتب را حل میکند. نتیجه به ویژگی خاص بودن انتخابگرها احترام میگذارد — در اینجا قانون 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"))
اعلانهای درونخطی و سلسلهمراتب
هر عنصر یک CSSStyleDeclaration زنده را از طریق ویژگی style خود نمایان میکند. اعلانهای درونخطی که با set_property() تنظیم میشوند، خاصیت بیشتری نسبت به قوانین شیوهنامه نویسنده دارند، و get_computed_style() این را نشان میدهد:
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"))
توکنساز و سازنده درخت
وقتی به کنترل بیشتری نسبت به یک درخت نهایی نیاز دارید، لایههای پایین عمومی API هستند. Tokenizer.tokenize() و Tokenizer.tokenize_fragment() جریان توکنها را برای یک قطعهٔ نشانهگذاری تولید میکنند، TreeBuilder.run() ساخت درخت مبتنی بر استانداردها را انجام میدهد، و تابع parse_html() از نشانهگذاری به درخت در یک فراخوانی میرود. اینها همان مؤلفههایی هستند که مسیر تجزیهٔ سطح بالایی استفاده میکند.
آدرسهای URL و رمزگذاریهای کاراکتر
URL.parse() و URL.can_parse() تجزیه و اعتبارسنجی URL به سبک WHATWG را انجام میدهند، همراه با URLSearchParams (append(), get(), has(), delete()) برای رشتههای پرسوجو. برای بایتهای خام، detect_encoding() رمزگذاری را تشخیص میدهد — شامل علامتهای ترتیب بایت — و متن رمزگشاییشده را به همراه سطح اطمینان برمیگرداند، در حالی که get_canonical_name() برچسبهای رمزگذاری را نرمالسازی میکند:
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)
شروع سریع
نصب از PyPI:
asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.سپس یک سند بسازید، آن را استایل دهید، و نتیجه محاسبهشده را بخوانید:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))
منبع باز و مجوزدهی
Aspose.HTML FOSS برای Python تحت مجوز MIT منتشر شده است، بنابراین استفاده تجاری، تغییر و توزیع مجدد همگی مجاز هستند. کد منبع در GitHub موجود است و بسته به عنوان aspose-html-foss در PyPI منتشر شده است.