Úvod

Aspose.HTML FOSS pro Python je nová open-source knihovna pro práci s HTML dokumenty v Python. Parsuje značkování do standardního modelu objektu dokumentu, umožňuje programově vytvářet a upravovat strom elementů a řeší CSS — včetně specifikace, inline deklarací a dědičnosti — do vypočítaných stylů, které můžete číst z libovolného elementu.

Knihovna cílí na backendové a nástrojové scénáře, kde není prohlížeč k dispozici nebo není žádoucí: služby, které čistí uložené HTML, pipeline, které restrukturalizují fragmenty stránek, a testovací sady, které ověřují generované značkování. Instalujete ji z PyPI jako aspose-html-foss, je licencována pod MIT a je implementována v čistém Python pro Python 3.10 a novější, takže se chová stejně na vývojářských strojích, CI běžících a serverech.

Mimo jádro DOM a CSS balíček poskytuje praktické stavební bloky, které zpracování HTML obvykle i tak vyžaduje: tokenizer a builder stromu HTML, které můžete ovládat přímo, třídy URL a URLSearchParams ve stylu WHATWG a detektor kódování byte-streamu.


Co je zahrnuto

Vytváření a úprava DOM

Vrstva DOM je postavena kolem Document, Element a Node. Vytvářejte elementy pomocí Document.create_element(), propojujte je pomocí append_child(), nastavujte atributy značkování pomocí Element.set_attribute() a znovu vyhledávejte uzly pomocí Document.get_element_by_id(). Celé stránky a fragmenty se parsují přes HTMLDocument.parse() a 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)

Aplikovat stylové listy a přečíst vypočtené styly

CSSStyleSheet.replace_sync() parsuje text stylového listu, Document.attach_style_sheet() jej uvádí do provozu a Element.get_computed_style() řeší kaskádu. Výsledek respektuje specifikaci selektorů—zde pravidlo ID přebíjí pravidlo třídy:

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

Inline deklarace a kaskáda

Každý prvek zpřístupňuje živý CSSStyleDeclaration prostřednictvím své vlastnosti style. Inline deklarace nastavené pomocí set_property() mají vyšší specifikaci než pravidla autorových stylových listů a get_computed_style() to odráží:

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

Tokenizér a stavitel stromu

Když potřebujete větší kontrolu než hotový strom, nižší vrstvy jsou veřejné API. Tokenizer.tokenize() a Tokenizer.tokenize_fragment() emitují tok tokenů pro kus značkování, TreeBuilder.run() provádí konstrukci stromu podle standardů a funkce parse_html() převádí značkování na strom v jednom volání. Jedná se o stejné komponenty, které používá vyšší úroveň parsovací cesty.

URL a kódování znaků

URL.parse() a URL.can_parse() zpracovávají parsování a validaci URL ve stylu WHATWG, s URLSearchParams (append(), get(), has(), delete()) pro řetězce dotazů. Pro surové bajty detect_encoding() detekuje kódování—včetně značek pořadí bajtů—a vrací dekódovaný text spolu s úrovní důvěry, zatímco get_canonical_name() normalizuje štítky kódování:

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)

Rychlý start

Instalovat z PyPI:

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

Pak vytvořte dokument, naformátujte jej a přečtěte vypočtený výsledek:

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 a licencování

Aspose.HTML FOSS pro Python je vydáno pod licencí MIT, takže komerční použití, úpravy i redistribuce jsou povoleny. Zdrojový kód je dostupný na GitHub a balíček je publikován na PyPI jako aspose-html-foss.


Začínáme

Související zdroje