Naviguer dans le HTML en Python
Navigation HTML
L’espace de noms Aspose.Html.Dom fournit une API qui représente et interagit avec tout document HTML, XML ou SVG et est entièrement basé sur la spécification WHATWG DOM prise en charge par de nombreux navigateurs modernes.
Cet article fournit des informations sur la manière d’extraire par programme des données de documents HTML avec Aspose.HTML for Python via .NET. Vous découvrirez :
- comment naviguer dans un document HTML et effectuer une inspection détaillée de ses éléments à l’aide de l’API Python ;
- comment naviguer dans le document en utilisant le sélecteur CSS et la requête XPath.
La navigation en HTML implique l’accès et la manipulation des éléments et de leurs relations au sein d’un document. Aspose.HTML for Python via .NET vous permet de naviguer et d’inspecter le HTML, ce qui implique de travailler avec le modèle d’objet de document (DOM) fourni par la bibliothèque. La liste suivante montre la manière la plus simple d’accéder à tous les éléments du DOM :
- Modèle objet du document (DOM) . La structure DOM représente le document HTML sous la forme d’un arbre de nœuds. Chaque nœud représente une partie du document, comme des éléments, du texte ou des commentaires.
- La classe Document représente l’ensemble du document HTML, XML ou SVG et sert de racine à l’arborescence du document.
- La classe Element représente un élément dans un document HTML ou XML.
- La classe Node représente un seul nœud dans l’arbre du document.
- Éléments d’accès
- Utilisez des méthodes comme
get_elements_by_tag_name(
tagname
) pour récupérer les éléments par leur nom de balise. - Utilisez la méthode get_element_by_id() pour accéder à un élément spécifique avec un identifiant unique.
- Utilisez
get_elements_by_class_name(
class_names
) pour récupérer les éléments par leur nom de classe. - Utilisez la méthode
query_selector(
selector
) pour un seul élément ou query_selector_all(selector
) pour une liste d’éléments correspondant à un sélecteur CSS.
- Naviguer dans l’arbre DOM
- Accéder aux enfants d’un élément en utilisant les propriétés child_nodes ou children.
- Utilisez la propriété first_child ou last_child pour renvoyer le premier ou le dernier nœud enfant du nœud courant, qui peut être n’importe quel type de nœud, tel qu’un élément, un texte ou un commentaire.
- Utilisez la propriété parent_node pour accéder au parent d’un élément donné.
- Accédez aux frères et sœurs en utilisant des propriétés telles que next_sibling ou next_sibling.
- Manipulation des éléments
- Utilisez les propriétés de la classe Element comme inner_html et text_content pour modifier le contenu de l’élément.
- Obtenir ou définir des attributs à l’aide de méthodes telles que
get_attribute(
nom_qualifié
) et set_attribute(nom_qualifié, valeur
).
Le
API Reference Source fournit une liste complète des classes et des méthodes de l’espace de noms aspose.html.dom
.
Naviguer dans l’arbre DOM
Nous examinons comment le DOM représente un document HTML en mémoire et comment utiliser l’API pour naviguer dans les fichiers HTML. Quatre des propriétés de la classe
Node - first_child
, last_child
, next_sibling
, et next_sibling
, fournissent chacune une référence vivante à un autre élément avec la relation définie avec l’élément actuel si l’élément apparenté existe.
En utilisant les propriétés mentionnées, vous pouvez naviguer dans un document HTML comme suit :
1from aspose.html import *
2
3# Prepare HTML code
4html_code = "<span>Hello</span> <span>World!</span>"
5
6# Initialize a document from the prepared code
7with HTMLDocument(html_code, ".") as document:
8 # Get the reference to the first child (first SPAN) of the BODY
9 element = document.body.first_child
10 print(element.text_content) # output: Hello
11
12 # Get the reference to the whitespace between html elements
13 element = element.next_sibling
14 print(element.text_content) # output: " "
15
16 # Get the reference to the second SPAN element
17 element = element.next_sibling
18 print(element.text_content) # output: World!
Inspection du HTML
Aspose.HTML contient une liste de méthodes basées sur les Element Traversal Specifications. Vous pouvez effectuer une inspection détaillée du document et de ses éléments à l’aide de l’API. Le code Python suivant montre comment naviguer et extraire des éléments spécifiques et leurs propriétés d’un document HTML à l’aide d’Aspose.HTML for Python via .NET.
1import os
2from aspose.html import *
3
4# Load a document from a file
5data_dir = "data"
6document_path = os.path.join(data_dir, "html_file.html")
7with HTMLDocument(document_path) as document:
8 # Get the <html> element of the document
9 element = document.document_element
10 print(element.tag_name) # HTML
11
12 # Get the last element of the <html> element
13 element = element.last_element_child
14 print(element.tag_name) # BODY
15
16 # Get the first element of the <body> element
17 element = element.first_element_child
18 print(element.tag_name) # H1
19 print(element.text_content) # Header 1
Le code Python fourni commence par définir le chemin d’accès au fichier HTML situé dans le répertoire “data”.
- Utilisez
HTMLDocument
pour charger un document, et la propriété document.document_element pour accéder à l’élément HTML racine. Affichez le nom de balise de cet élément, qui est “HTML”. - Ensuite, récupérez le dernier enfant de l’élément HTML à l’aide de last_element_child, qui est l’élément “BODY”, et imprimez son nom de balise.
- Ensuite, utilisez la propriété first_element_child pour accéder au premier enfant de l’élément BODY, qui est un élément “H1”, en imprimant à la fois son nom de balise et son contenu textuel, qui est “Header 1”.
Requête XPath
L’alternative à la navigation HTML est la requête XPath ( XML Path Language) qui est souvent appelée simplement XPath. Il s’agit d’un langage de requête qui peut être utilisé pour interroger des données à partir de documents HTML. Il est basé sur une représentation DOM du document HTML et sélectionne les nœuds selon différents critères. La syntaxe des expressions XPath est assez simple et, ce qui est plus important, elle est facile à lire et à prendre en charge.
L’exemple suivant montre comment utiliser les requêtes XPath dans l’API Aspose.HTML Python :
1from aspose.html import *
2from aspose.html.dom.xpath import *
3
4# Prepare HTML code
5code = """
6 <div class='happy'>
7 <div>
8 <span>Hello,</span>
9 </div>
10 </div>
11 <p class='happy'>
12 <span>World!</span>
13 </p>
14"""
15
16# Initialize a document based on the prepared code
17with HTMLDocument(code, ".") as document:
18 # Here we evaluate the XPath expression where we select all child SPAN elements from elements whose 'class' attribute equals to 'happy'
19 result = document.evaluate("//*[@class='happy']//span",
20 document,
21 None,
22 XPathResultType.ANY,
23 None)
24
25 # Iterate over the resulted nodes
26 node = result.iterate_next()
27 while node is not None:
28 print(node.text_content)
29 node = result.iterate_next()
30 # output: Hello,
31 # output: World!
La méthode
evaluate() de la bibliothèque Aspose.HTML Python vous permet d’exécuter des requêtes XPath sur des documents HTML ou XML, permettant l’extraction de données détaillées et la navigation. Elle prend une expression XPath comme paramètre principal, spécifiant la requête à exécuter, et renvoie un objet XPathResult
basé sur le type de résultat défini.
Sélecteur CSS
Outre la navigation HTML et XPath, l’API Aspose.HTML Python prend en charge l’API
CSS Selector API. Cette API vous permet de formuler des modèles de recherche à l’aide de la syntaxe
CSS Selectors pour identifier et sélectionner des éléments dans un document HTML. Par exemple, la méthode
query_selector_all(selector
) peut être utilisée pour parcourir un document HTML et récupérer les éléments qui correspondent à un sélecteur CSS spécifié. Cette méthode accepte une chaîne de sélection CSS comme argument et renvoie une NodeList
contenant tous les éléments conformes aux critères du sélecteur. Les sélecteurs CSS permettent de trouver et de manipuler efficacement des éléments en fonction de leurs attributs, de leurs classes, de leurs identifiants et d’autres critères, ce qui en fait un outil polyvalent pour les tâches d’analyse de documents simples et complexes. Cette fonctionnalité est particulièrement utile pour des tâches telles que le stylisme, l’extraction de données et la manipulation de contenu dans un document HTML.
1from aspose.html import *
2
3# Prepare HTML code
4code = """
5 <div class='happy'>
6 <div>
7 <span>Hello,</span>
8 </div>
9 </div>
10 <p class='happy'>
11 <span>World!</span>
12 <p>I use CSS Selector.</p>
13 </p>
14"""
15
16# Initialize a document based on the prepared code
17with HTMLDocument(code, ".") as document:
18 # Create a CSS Selector that extracts all elements whose "class" attribute equals "happy" and their child <span> elements
19 elements = document.query_selector_all(".happy span")
20
21# Iterate over the resulted list of elements
22 for element in elements:
23 print(element.text_content)
24 # output: Hello,
25 # output: World!
Conclusion
La bibliothèque Aspose.HTML for Python via .NET offre un ensemble d’outils robustes pour travailler avec des documents HTML, XML et SVG, en adhérant à la spécification WHATWG DOM largement supportée par les navigateurs modernes. En utilisant la classe HTMLDocument
et ses diverses propriétés et méthodes de navigation, vous pouvez efficacement interagir avec et manipuler le contenu HTML, en évitant les complexités de l’extraction manuelle des données et en vous concentrant sur des aspects plus stratégiques de vos projets.
Aspose.HTML propose des applications Web HTML gratuites en ligne qui constituent une collection de convertisseurs, de fusions, d’outils de référencement, de générateurs de code HTML, d’outils d’URL, de vérifications de l’accessibilité du web, et bien d’autres choses encore. Les applications fonctionnent sur n’importe quel système d’exploitation doté d’un navigateur web et ne nécessitent aucune installation de logiciel supplémentaire. Utilisez notre collection d’applications web HTML pour effectuer vos tâches quotidiennes et faciliter votre travail !