Najczęściej zadawane pytania

Najczęściej zadawane pytania

Licencjonowanie i Open Source

Jakiej licencji używa Aspose.HTML FOSS dla Python?

Biblioteka jest wydana na licencji MIT. Pełny tekst jest dostarczany jako LICENSE plik w repozytorium GitHub.

Czy mogę jej używać w produktach komercyjnych?

Tak. Licencja MIT zezwala na komercyjne wykorzystanie, modyfikację, redystrybucję i sublicencjonowanie. Jedynym wymogiem jest zachowanie informacji o prawach autorskich oraz tekstu licencji przy istotnych kopiach.

Instalacja i wymagania

Jak zainstalować bibliotekę i które wersje Python są wspierane?

Zainstaluj przy użyciu git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. Biblioteka wymaga Python 3.10 lub nowszej; bieżąca wersja to 0.1.0.

Czy istnieją jakieś natywne zależności?

Nie. Implementacja jest czystym Python — bez silnika przeglądarki, bez skompilowanych rozszerzeń — więc zachowuje się identycznie na Windows, Linux i macOS, w tym w runnerach CI oraz kontenerach.

API Usage

Jak sparsować HTML do dokumentu?

Użyj HTMLDocument.parse() dla pełnych stron lub HTMLDocument.parse_fragment() dla częściowego markupu. Do konstrukcji programistycznej, Document jest fabryką węzłów:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)

Jak zastosować CSS i odczytać wynikowy styl?

Parsuj tekst arkusza stylów przy użyciu CSSStyleSheet.replace_sync(), dołącz go za pomocą Document.attach_style_sheet() i odczytaj rozwiązany wynik przy użyciu 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"))

Czy kaskada obsługuje specyficzność i !important poprawnie?

Tak. Wartości obliczone podążają za specyficznością selektorów (ID wygrywa z klasą, klasa wygrywa z typem), deklaracje inline mają wyższy priorytet niż reguły autora, a !important reguły autora mają wyższy priorytet niż nie-ważne deklaracje inline. Dziedziczenie przebiega od rodzica do dziecka dla właściwości dziedziczonych.

Czy mogę używać tokenizera i budowniczego drzewa bezpośrednio?

Tak — Tokenizer.tokenize() generuje standardowy strumień tokenów, TreeBuilder.run() wykonuje konstrukcję drzewa, a parse_html() opakowuje cały potok w jednym wywołaniu.

Jak pracować z URL-ami i kodowaniami znaków?

URL.parse() i URL.can_parse() zapewniają obsługę URL-ów w stylu WHATWG z URLSearchParams dla ciągów zapytań. Dla surowych bajtów, detect_encoding() zwraca kodowanie, poziom pewności oraz zdekodowany tekst.

Znane ograniczenia

Czy istnieją jakieś API, które są dostępne, ale niezaimplementowane?

Niewielka liczba członków jest zadeklarowana, ale nie jest obecnie funkcjonalna, w tym CSSRule.type, CSSRule.css_text i HTMLImageElement.decode. Plik limitations.md w modelu wiedzy śledzi te elementy; unikaj polegania na nich.

Czy biblioteka renderuje strony lub konwertuje je do innych formatów?

Nie. Obecne wydanie koncentruje się na parsowaniu, manipulacji DOM, obliczaniu stylów CSS, strukturach układu, URL-ach i kodowaniach. Nie zawiera konwersji formatów ani renderowania obrazów/PDF.

Czy JavaScript jest wykonywany automatycznie podczas parsowania?

Nie. Parsowanie nigdy nie uruchamia skryptów. Ewaluacja skryptów jest jawna i wymaga zgody poprzez JSContext, a ładowanie modułów jest kontrolowane przez ModuleRegistry i ModuleLoadPolicy.

Zobacz także

 Polski