Introduction

Aspose.HTML FOSS for Python est une nouvelle bibliothèque open source pour travailler avec des documents HTML en Python. Elle analyse le balisage en un modèle d’objet document basé sur des normes, vous permet de créer et de modifier des arbres d’éléments programmatiquement, et résout CSS — y compris la spécificité, les déclarations en ligne et l’héritage — en styles calculés que vous pouvez lire à partir de n’importe quel élément.

La bibliothèque vise les scénarios backend et d’outillage où un navigateur est indisponible ou indésirable: services qui nettoient les HTML stockés, pipelines qui restructurent les fragments de page, et suites de tests qui valident le balisage généré. Elle s’installe depuis PyPI sous le nom aspose-html-foss, est sous licence MIT, et est implémentée en pur Python pour Python3.10 et versions ultérieures, de sorte qu’elle se comporte de la même façon sur les machines de développement, les runners CI et les serveurs.

Au-delà du cœur du DOM et de CSS, le paquet fournit des blocs de construction pratiques dont le traitement HTML a généralement besoin de toute façon: un tokenizer et un constructeur d’arbre HTML que vous pouvez piloter directement, des classes URL et URLSearchParams de style WHATWG, et un détecteur d’encodage de flux d’octets.


Ce qui est inclus

Construire et modifier le DOM

La couche DOM est construite autour de Document, Element et Node. Créez des éléments avec Document.create_element(), assemblez-les avec append_child(), définissez les attributs de balisage avec Element.set_attribute(), et retrouvez les nœuds avec Document.get_element_by_id(). Les pages complètes et les fragments sont analysés via HTMLDocument.parse() et 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)

Appliquer les feuilles de style et lire les styles calculés

CSSStyleSheet.replace_sync() analyse le texte de la feuille de style, Document.attach_style_sheet() le met en oeuvre, et Element.get_computed_style() résout la cascade. Le résultat respecte la spécificité des sélecteurs — ici la règle ID l’emporte sur la règle de classe:

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

Déclarations en ligne et la cascade

Chaque élément expose un CSSStyleDeclaration en direct via sa propriété style. Les déclarations en ligne définies avec set_property() possèdent une spécificité plus élevée que les règles de feuille de style de l’auteur, et get_computed_style() le reflète:

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

Analyseur lexical et constructeur d’arbre

Lorsque vous avez besoin de plus de contrôle qu’un arbre fini, les couches inférieures sont publiques API. Tokenizer.tokenize() et Tokenizer.tokenize_fragment() émettent le flux de jetons pour un morceau de balisage, TreeBuilder.run() effectue la construction d’arbre conforme aux normes, et la fonction parse_html() passe du balisage à l’arbre en un seul appel. Ce sont les mêmes composants utilisés par le chemin d’analyse de haut niveau.

URL et encodages de caractères

URL.parse() et URL.can_parse() gèrent l’analyse et la validation d’URL au style WHATWG, avec URLSearchParams (append(), get(), has(), delete()) pour les chaînes de requête. Pour les octets bruts, detect_encoding() détecte l’encodage — marques d’ordre d’octet incluses — et renvoie le texte décodé avec un niveau de confiance, tandis que get_canonical_name() normalise les étiquettes d’encodage:

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)

Démarrage rapide

Installez depuis PyPI :

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

Puis créez un document, stylisez-le et lisez le résultat calculé :

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

Aspose.HTML FOSS pour Python est publié sous la licence MIT, de sorte que l’utilisation commerciale, la modification et la redistribution sont toutes autorisées. Le code source est disponible sur GitHub et le package est publié sur PyPI sous le nom aspose-html-foss.


Premiers pas

Ressources associées