Navigation HTML à l'aide d'Aspose.HTML for Java
Dans cet article, vous apprendrez à naviguer dans un document HTML et à effectuer une inspection détaillée de ses éléments à l’aide de l’API Aspose.HTML for Java. Vous pouvez facilement créer votre propre application pour analyser, collecter ou extraire des informations à partir de documents HTML puisque notre API fournit un ensemble d’outils puissants pour naviguer dans le document à l’aide d’un sélecteur CSS, d’une requête XPath ou de filtres personnalisés.
Navigation HTML
Il existe de nombreuses façons de naviguer en HTML. La liste suivante montre la manière la plus simple d’accéder à tous les éléments du DOM en utilisant la classe Node :
Property | Description |
---|---|
FirstChild | Accessing this attribute of an element must return a reference to the first child node. |
LastChild | Accessing this attribute of an element must return a reference to the last child node |
NextSibling | Accessing this attribute of an element must return a reference to the sibling node of that element which most immediately follows that element. |
PreviousSibling | Accessing this attribute of an element must return a reference to the sibling node of that element which most immediately precedes that element. |
ChildNodes | Returns a list that contains all children of that element. |
En utilisant les propriétés mentionnées, vous pouvez naviguer dans un document HTML comme suit :
1// Prepare HTML code
2String html_code = "<span>Hello,</span> <span>World!</span>";
3
4// Initialize a document from the prepared code
5HTMLDocument document = new HTMLDocument(html_code, ".");
6
7// Get the reference to the first child (first <span>) of the document body
8Element element = document.getBody().getFirstElementChild();
9System.out.println(element.getTextContent());
10// @output: Hello,
11
12// Get the reference to the second <span> element
13element = element.getNextElementSibling();
14System.out.println(element.getTextContent());
15// @output: World!
Pour les scénarios plus complexes, lorsque vous avez besoin de trouver un nœud en fonction d’un modèle spécifique (par exemple, obtenir la liste des en-têtes, des liens, etc.), vous pouvez utiliser un objet spécialisé TreeWalker ou NodeIterator avec une implémentation Filter personnalisée.
L’exemple suivant montre comment implémenter votre propre NodeFilter pour ignorer tous les éléments à l’exception des images :
1public static class OnlyImageFilter extends NodeFilter {
2 @Override
3 public short acceptNode(Node n) {
4 // The current filter skips all elements, except IMG elements.
5 return "img".equals(n.getLocalName())
6 ? FILTER_ACCEPT
7 : FILTER_SKIP;
8 }
9}
Une fois que vous avez mis en place un filtre, vous pouvez utiliser la navigation HTML comme suit :
1// Prepare HTML code
2String code = " < p > Hello, </p >\n" +
3 " <img src = 'image1.png' >\n" +
4 " <img src = 'image2.png' >\n" +
5 " <p > World ! </p >\n";
6
7// Initialize a document based on the prepared code
8HTMLDocument document = new HTMLDocument(code, ".");
9
10// To start HTML navigation, we need to create an instance of TreeWalker
11// The specified parameters mean that it starts walking from the root of the document, iterating all nodes, and using our custom implementation of the filter
12ITreeWalker iterator = document.createTreeWalker(document, NodeFilter.SHOW_ALL, new HtmlNavigationTests.OnlyImageFilter());
13// Use
14while (iterator.nextNode() != null) {
15 // Since we are using our own filter, the current node will always be an instance of the HTMLImageElement
16 // So, we don't need the additional validations here
17 HTMLImageElement image = (HTMLImageElement) iterator.getCurrentNode();
18
19 System.out.println(image.getSrc());
20 // @output: image1.png
21 // @output: image2.png
22}
XPath
L’alternative au HTML Navigation est le XML Path Language. 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 for Java :
1// Prepare HTML code
2String code = "< div class='happy' >\n" +
3 " <div >\n" +
4 " <span > Hello! </span >\n" +
5 " </div >\n" +
6 " </div >\n" +
7 " <p class='happy' >\n" +
8 " <span > World! </span >\n" +
9 " </p >\n";
10
11// Initialize a document based on the prepared code
12HTMLDocument document = new HTMLDocument(code, ".");
13
14// Here, we evaluate the XPath expression where we select all child <span> elements from elements whose 'class' attribute equals to 'happy'
15IXPathResult result = document.evaluate("//*[@class='happy']//span",
16 document,
17 null,
18 XPathResultType.Any,
19 null
20);
21
22// Iterate over the resulted nodes
23for (Node node; (node = result.iterateNext()) != null; ) {
24 System.out.println(node.getTextContent());
25 // @output: Hello!
26 // @output: World!
27}
Sélecteur CSS
Outre HTML Navigation et XPath, vous pouvez utiliser CSS Selector API qui est également pris en charge par notre bibliothèque. Cette API est conçue pour créer un modèle de recherche afin de faire correspondre les éléments d’une arborescence de documents sur la base de la syntaxe des CSS Selectors.
1// Prepare HTML code
2String code = "< div class='happy' >\n" +
3 " <div >\n" +
4 " <span > Hello, </span >\n" +
5 " </div >\n" +
6 " </div >\n" +
7 " <p class='happy' >\n" +
8 " <span > World ! </span >\n" +
9 " </p >\n";
10
11// Initialize a document based on the prepared code
12HTMLDocument document = new HTMLDocument(code, ".");
13
14// Here, we create a CSS Selector that extracts all elements whose 'class' attribute equals to 'happy' and their child SPAN elements
15NodeList elements = document.querySelectorAll(".happy span");
16
17// Iterate over the resulted list of elements
18elements.forEach(element -> {
19 System.out.println(((HTMLElement) element).getInnerHTML());
20 // @output: Hello,
21 // @output: World!
22});
Aspose.HTML propose AI Keyword Extractor, un outil basé sur l’intelligence artificielle qui permet d’extraire des mots-clés à partir de pages Web, de texte brut ou de fichiers. Cette application vous aide à identifier rapidement les sujets et les tendances clés pour l’optimisation des sites Web, l’analyse des concurrents ou le résumé de documents volumineux. Il suffit de coller le texte ou l’URL, de sélectionner les paramètres et de cliquer sur “Extraire” pour obtenir des mots-clés précis et significatifs en quelques secondes. Idéal pour améliorer la visibilité sur les moteurs de recherche, cibler le contenu et prendre des décisions fondées sur des données.