Bevezetés

Aspose.HTML FOSS a(z) Python számára egy új nyílt forráskódú könyvtár a(z) HTML dokumentumok Python kezeléséhez. A markup-ot szabványalapú dokumentumobjektum-modellé (DOM) elemzi, lehetővé teszi az elemfák programozott építését és módosítását, valamint feloldja a(z) CSS—beleértve a specifikusságot, a beágyazott deklarációkat és az öröklődést—számított stílusokra, amelyeket bármely elemről visszaolvashatsz.

A könyvtár a háttér- és eszközhasználati esetekre fókuszál, ahol a böngésző nem elérhető vagy nem kívánt: szolgáltatások, amelyek megtisztítják a tárolt HTML-t, csővezetékek, amelyek újraszervezik az oldalfragmentumokat, és tesztkészletek, amelyek a generált markup-ra vonatkozó állításokat ellenőrzik. PyPI-ről telepíthető aspose-html-foss néven, MIT licenc alatt áll, és tisztán Python nyelven van megvalósítva a Python 3.10 és újabb verzióihoz, így ugyanúgy viselkedik fejlesztői gépeken, CI futtatókon és szervereken.

A DOM és a CSS magja mellett a csomag gyakorlati építőelemeket is tartalmaz, amelyekre a HTML feldolgozás általában szükség van: egy HTML tokenizáló és faépítő, amelyet közvetlenül vezérelhetsz, WHATWG-stílusú URL és URLSearchParams osztályok, valamint egy bájtsorozat-kódolásdetektor.


Mi van benne

A DOM építése és módosítása

A DOM réteg a Document, Element és Node köré épül. Elemeket hozhatsz létre a Document.create_element() segítségével, összekapcsolhatod őket a append_child() segítségével, beállíthatod a markup attribútumokat a Element.set_attribute() használatával, és újra lekérdezheted a csomópontokat a Document.get_element_by_id() segítségével. Teljes oldalak és fragmentumok a HTMLDocument.parse() és a HTMLDocument.parse_fragment() segítségével kerülnek feldolgozásra.

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)

Stíluslapok alkalmazása és a számított stílusok lekérdezése

CSSStyleSheet.replace_sync() elemzi a stíluslap szövegét, Document.attach_style_sheet() beveti azt, és Element.get_computed_style() feloldja a kaszkádot. Az eredmény tiszteletben tartja a szelektorok specifikusságát — itt az ID szabály felülülírja az osztály szabályt:

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

Beágyazott deklarációk és a kaszkád

Minden elem élő CSSStyleDeclaration-t tesz elérhetővé a style tulajdonságán keresztül. A set_property() segítségével beállított beágyazott deklarációk nagyobb specifikussággal rendelkeznek, mint a szerzői stíluslap szabályai, és a get_computed_style() ezt tükrözi:

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áló és faépítő

Ha egy kész fa helyett nagyobb irányításra van szükség, az alacsonyabb rétegek nyilvános API elemek. A Tokenizer.tokenize() és a Tokenizer.tokenize_fragment() tokenfolyamot bocsátanak ki egy jelölőnyelvi darabra, a TreeBuilder.run() szabványos alapú faépítést végez, és a parse_html() függvény egy hívással a jelölőnyelvből a fára lép. Ezek ugyanazok az összetevők, amelyeket a magas szintű elemzési útvonal használ.

URL-ek és karakterkódolások

URL.parse() és a URL.can_parse() kezelik a WHATWG-stílusú URL elemzést és validálást, a URLSearchParams ( append(), get(), has(), delete() ) segítségével a lekérdezési karakterláncokhoz. Nyers bájtok esetén a detect_encoding() felismeri a kódolást — a bájtnyom jelzésekkel együtt — és visszaadja a dekódolt szöveget egy megbízhatósági szinttel együtt, míg a get_canonical_name() normalizálja a kódoláscímkéket:

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)

Gyors kezdés

Telepítés innen PyPI:

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

Ezután építsen fel egy dokumentumot, formázza azt, és olvassa el a kiszámított eredményt:

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

Nyílt forráskód & licencelés

Aspose.HTML FOSS a(z) Python számára MIT licenc alatt kerül kiadásra, így a kereskedelmi felhasználás, módosítás és újraelosztás mind engedélyezett. A forráskód elérhető itt: GitHub, és a csomag közzétéve van itt: PyPI mint aspose-html-foss.


Kezdő lépések

Kapcsolódó források