Wprowadzenie

Aspose.HTML FOSS dla Python to nowa biblioteka open-source do pracy z dokumentami HTML w Python. Analizuje ona znacznikowanie do opartego na standardach modelu obiektowego dokumentu, umożliwia programowe budowanie i modyfikowanie drzew elementów oraz rozwiązuje CSS — w tym specyficzność, deklaracje inline i dziedziczenie — w style obliczone, które możesz odczytać z dowolnego elementu.

Biblioteka jest skierowana do scenariuszy backendowych i narzędziowych, w których przeglądarka jest niedostępna lub niepożądana: usługi czyszczące przechowywane HTML, potoki przekształcające fragmenty stron oraz zestawy testów weryfikujące wygenerowane znacznikowanie. Instaluje się z PyPI jako aspose-html-foss, jest licencjonowana na licencji MIT i zaimplementowana w czystym Python dla Python 3.10 i nowszych, dzięki czemu zachowuje się tak samo na maszynach deweloperskich, runnerach CI i serwerach.

Poza rdzeniem DOM i CSS, pakiet dostarcza praktyczne elementy budulcowe, które przetwarzanie HTML zazwyczaj i tak wymaga: tokenizator i budowniczy drzew HTML, które możesz sterować bezpośrednio, klasy URL i URLSearchParams w stylu WHATWG oraz wykrywacz kodowania strumienia bajtów.


Co zawiera

Buduj i modyfikuj DOM

Warstwa DOM opiera się na Document, Element i Node. Twórz elementy za pomocą Document.create_element(), łącz je ze sobą przy użyciu append_child(), ustawiaj atrybuty znacznikowania za pomocą Element.set_attribute() i ponownie wyszukuj węzły przy użyciu Document.get_element_by_id(). Pełne strony i fragmenty są parsowane przy użyciu HTMLDocument.parse() i 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)

Zastosuj arkusze stylów i odczytaj obliczone style

CSSStyleSheet.replace_sync() analizuje tekst arkusza stylów, Document.attach_style_sheet() uruchamia go, a Element.get_computed_style() rozwiązuje kaskadę. Wynik szanuje specyficzność selektorów — tutaj reguła ID wygrywa nad regułą klasy:

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"))

Deklaracje inline i kaskada

Każdy element udostępnia żywy CSSStyleDeclaration poprzez swoją własność style. Deklaracje inline ustawione za pomocą set_property() mają wyższą specyficzność niż reguły arkusza stylów autora, a get_computed_style() to odzwierciedla:

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"))

Tokenizator i budowniczy drzewa

Gdy potrzebujesz większej kontroli niż gotowe drzewo, niższe warstwy są publicznymi API. Tokenizer.tokenize() i Tokenizer.tokenize_fragment() emitują strumień tokenów dla fragmentu markupu, TreeBuilder.run() wykonuje konstrukcję drzewa zgodną ze standardami, a funkcja parse_html() przechodzi od markupu do drzewa w jednym wywołaniu. Są to te same komponenty, z których korzysta wysokopoziomowa ścieżka parsowania.

Adresy URL i kodowania znaków

URL.parse() i URL.can_parse() obsługują parsowanie i walidację adresów URL w stylu WHATWG, z URLSearchParams (append(), get(), has(), delete()) dla ciągów zapytań. Dla surowych bajtów, detect_encoding() wykrywa kodowanie — włączając znaczniki kolejności bajtów — i zwraca zdekodowany tekst wraz z poziomem pewności, podczas gdy get_canonical_name() normalizuje etykiety kodowań:

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)

Szybki start

Zainstaluj z PyPI:

asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.

Następnie zbuduj dokument, sformatuj go i odczytaj obliczony wynik:

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"))

Open Source i licencjonowanie

Aspose.HTML FOSS dla Python jest udostępniony na licencji MIT, więc komercyjne użycie, modyfikacja i redystrybucja są dozwolone. Kod źródłowy jest dostępny na GitHub, a pakiet jest publikowany na PyPI jako aspose-html-foss.


Rozpoczęcie

Powiązane zasoby