1. Produits
  2.   Aspose.HTML
  3.   Aspose.HTML FOSS for Python

Aspose.HTML FOSS pour Python

Analyse HTML en un DOM conforme aux normes, applique CSS et calcule les styles à partir de Python — gratuit, open-source et pur Python.

Bibliothèque Open-Source Python pour le traitement HTML

Aspose.HTML FOSS for Python est une bibliothèque gratuite et open-source pour travailler avec des documents HTML dans des applications Python. Installez-la avec une seule commande git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git et commencez à analyser le balisage en un modèle d’objet de document, à construire et modifier des arbres d’éléments, à attacher des feuilles de style CSS, à résoudre les styles calculés et à travailler avec les URL et les encodages de caractères — le tout en pur Python sans dépendance de navigateur.

The library exposes a standards-oriented API built around HTMLDocument, Document, Element, and CSSStyleSheet. Parse markup with HTMLDocument.parse(), create and connect nodes with Document.create_element() and append_child(), look elements up with get_element_by_id(), style them through CSSStyleSheet.replace_sync() and the element-level style declaration, and read the result back with Element.get_computed_style(). Lower-level building blocks — the HTML Tokenizer, the TreeBuilder, WHATWG-style URL and URLSearchParams, and the detect_encoding() byte-stream detector — are available when you need direct control.

Aspose.HTML FOSS est sous licence MIT et implémenté en pur Python, nécessitant Python 3.10 ou ultérieur. Il s’exécute de façon identique sur Windows, Linux et macOS — y compris les exécutants CI, les conteneurs Docker et les environnements serverless. Pour la gamme de produits d’entreprise, voir Aspose.HTML — Enterprise Product Family.

HTML Analyse et manipulation du DOM

  • Analyser les pages complètes avec HTMLDocument.parse() ou les fragments avec HTMLDocument.parse_fragment()
  • Construire des documents par programme avec Document.create_element() et append_child()
  • Rechercher des nœuds avec Document.get_element_by_id() et lire les attributs du balisage via Element.get_attribute()
  • Définir les attributs avec Element.set_attribute() et assigner du texte via Node.text_content
  • Sérialiser n’importe quel sous-arbre en balisage avec la fonction serialise()

Qui utilise le traitement DOM

  • Services backend qui nettoient ou réécrivent les HTML soumis par les utilisateurs avant le stockage
  • Pipelines de contenu qui extraient ou restructurent les fragments de page à grande échelle
  • Suites de tests qui vérifient la structure du balisage généré dans le CI

CSS Feuilles de style et styles calculés

  • Analyse le texte de la feuille de style avec CSSStyleSheet.replace_sync() et attache-le via Document.attach_style_sheet()
  • Définit les déclarations en ligne via la propriété style de l’élément avec CSSStyleDeclaration.set_property()
  • Résous la cascade — spécificité, règles inline-vs-author et héritage — avec Element.get_computed_style()
  • Lis les valeurs résolues avec CSSStyleDeclaration.get_property_value()

Qui utilise Style Computation

  • Outils d’email et de newsletter qui vérifient les styles effectifs avant l’envoi
  • HTML sanitizers qui doivent connaître le style avec lequel un élément est réellement rendu
  • Développeurs qui déboguent le comportement de la cascade et de la spécificité hors d’un navigateur

Tokeniseur et construction d’arbre

  • Piloter le tokenizer HTML directement avec Tokenizer.tokenize() ou Tokenizer.tokenize_fragment()
  • Effectuer la construction d’arbre conforme aux normes avec TreeBuilder.run()
  • Analyser le balisage directement en un arbre avec la fonction parse_html()

Qui utilise l'analyse de bas niveau

  • Linters et analyseurs qui inspectent les flux de jetons plutôt que les arbres terminés
  • Outils qui nécessitent une gestion d’erreurs personnalisée lors de la récupération de balisage malformé
  • Projets éducatifs étudiant le fonctionnement de l’analyse HTML basée sur les normes

URL et encodages de caractères

  • Analyser et valider les URL avec URL.parse() et URL.can_parse()
  • Lire et modifier les chaînes de requête avec URLSearchParams — append(), get(), has(), delete()
  • Détecter les encodages de flux d’octets (BOM et détection de contenu) avec detect_encoding()
  • Normaliser les libellés d’encodage en noms canoniques avec get_canonical_name()

Qui utilise les outils URL et d'encodage

  • Robots d’exploration et récupérateurs qui doivent résoudre et dédupliquer les URL de manière fiable
  • Pipelines d’ingestion traitant des documents hérités avec des encodages mixtes
  • Services qui analysent ou réécrivent les paramètres de requête côté serveur

Construire un DOM et Résoudre la CSS Cascade

Créez un document, attachez une feuille de style et lisez le style calculé — le sélecteur 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"))

Les styles en ligne ont la priorité

Les déclarations en ligne ont une spécificité plus élevée que les règles de feuille de style de l’auteur :

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

Détecter l’encodage des caractères à partir des octets

Détectez l’encodage d’un flux d’octets brut, BOM inclus, et récupérez le texte décodé :

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)

Foire aux questions

Quelle licence Aspose.HTML FOSS for Python utilise ?

La licence MIT — l’utilisation commerciale, la modification et la redistribution sont toutes autorisées ; la seule exigence est de conserver l’avis de droit d’auteur avec les copies substantielles.

Quelles versions de Python sont prises en charge, et comment les installer ?

Python 3.10 ou version ultérieure. Installez avec git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git — l’implémentation est pure Python sans dépendances natives.

Comment analyser HTML dans un document ?

Utilisez HTMLDocument.parse() pour les pages complètes ou HTMLDocument.parse_fragment() pour le balisage partiel ; Document est la fabrique pour construire des arbres programmatiquement.

La cascade CSS gère-t-elle la spécificité et !important correctement ?

Oui — les valeurs calculées suivent la spécificité des sélecteurs, les déclarations en ligne priment sur les règles d’auteur, les règles d’auteur !important priment sur les déclarations en ligne non importantes, et l’héritage s’écoule du parent à l’enfant.

La bibliothèque rend-elle des pages ou les convertit-elle en d’autres formats ?

Non. La version actuelle se concentre sur l’analyse, la manipulation du DOM, le calcul du style CSS, les structures de mise en page, les URLs et les encodages — aucune conversion de format ni rendu d’image/PDF.

Le JavaScript est-il exécuté automatiquement pendant l’analyse ?

Non. L’analyse ne lance jamais de scripts ; l’évaluation est explicite et sur demande via JSContext avec le chargement des modules contrôlé par ModuleRegistry et ModuleLoadPolicy.

  

Ressources de support et d'apprentissage

 Français