Introductie

Aspose.HTML FOSS voor Python is een nieuwe open-source bibliotheek voor het werken met HTML documenten in Python. Het parseert markup naar een op standaarden gebaseerd documentobjectmodel, stelt je in staat om elementbomen programmeringsmatig te bouwen en te wijzigen, en lost CSS op — inclusief specificiteit, inline declaraties en overerving — naar berekende stijlen die je van elk element kunt teruglezen.

De bibliotheek richt zich op backend- en toolingscenario’s waarin een browser niet beschikbaar of ongewenst is: services die opgeslagen HTML opschonen, pipelines die paginafragmenten herstructureren, en testsuites die beweringen doen over gegenereerde markup. Hij wordt geïnstalleerd vanaf PyPI als aspose-html-foss, heeft een MIT-licentie, en is geïmplementeerd in pure Python voor Python 3.10 en later, zodat hij zich hetzelfde gedraagt op ontwikkelmachines, CI-runners en servers.

Naast de DOM en de kern van CSS levert het pakket praktische bouwblokken die HTML verwerking gewoonlijk toch nodig heeft: een HTML tokenizer en boomopbouwer die je direct kunt aansturen, WHATWG-stijl URL en URLSearchParams klassen, en een byte-stream coderingdetectie.


Wat er inbegrepen is

Bouw en wijzig de DOM

De DOM-laag is gebouwd rond Document, Element en Node. Maak elementen aan met Document.create_element(), verbind ze met append_child(), stel markup-attributen in met Element.set_attribute(), en zoek knooppunten opnieuw op met Document.get_element_by_id(). Volledige pagina’s en fragmenten worden geparseerd via HTMLDocument.parse() en 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)

Stijlen toepassen en berekende stijlen lezen

CSSStyleSheet.replace_sync() parseert stylesheet-tekst, Document.attach_style_sheet() zet deze in werking, en Element.get_computed_style() lost de cascade op. Het resultaat respecteert selector-specificiteit — hier wint de ID-regel van de klasse-regel:

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 declaraties en de cascade

Elk element exposeert een live CSSStyleDeclaration via zijn style-eigenschap. Inline declaraties ingesteld met set_property() hebben een hogere specificiteit dan auteurs-stylesheet-regels, en get_computed_style() weerspiegelt dat:

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

Tokenizer en boomopbouwer

Wanneer je meer controle nodig hebt dan een afgewerkte boom, zijn de lagere lagen openbare API. Tokenizer.tokenize() en Tokenizer.tokenize_fragment() zenden de tokenstroom uit voor een stuk markup, TreeBuilder.run() voert op standaarden gebaseerde boomconstructie uit, en de parse_html()-functie gaat van markup naar boom in één oproep. Dit zijn dezelfde componenten die het high-level parse-pad gebruikt.

URL’s en tekencoderingen

URL.parse() en URL.can_parse() behandelen WHATWG-stijl URL-parsing en validatie, met URLSearchParams (append(), get(), has(), delete()) voor query-strings. Voor ruwe bytes detecteert detect_encoding() de codering — inclusief byte-order marks — en retourneert de gedecodeerde tekst naast een betrouwbaarheidsniveau, terwijl get_canonical_name() coderinglabels normaliseert:

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)

Snelstart

Installeer van PyPI:

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

Bouw vervolgens een document, style het, en lees het berekende resultaat:

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 & licenties

Aspose.HTML FOSS voor Python wordt uitgebracht onder de MIT-licentie, dus commercieel gebruik, wijziging en herdistributie zijn allemaal toegestaan. De broncode is beschikbaar op GitHub en het pakket is gepubliceerd op PyPI als aspose-html-foss.


Aan de slag

Gerelateerde bronnen