Pendant la programmation ou lors de la rédaction d'un robot de réseau, HTML doit souvent être analysé pour extraire des données utiles. Un bon outil est particulièrement utile et peut fournir beaucoup d'aide.
Après l'avoir utilisé: il estime que HtmlCleaner est meilleur que HTMLParser, en particulier le XPATH de HtmlCleaner.
Faisons un exemple de htmlcleaner.
1. Utilisation de HtmlCleaner:
1. Htmlcleaner
HTMLCleaner est un analyseur de document HTML en langue java open source. HTMLCleaner peut réorganiser chaque élément du document HTML et générer des documents HTML avec de bonnes structures (bien formés). Les règles qu'il suit par défaut est similaire aux règles utilisées par la plupart des navigateurs Web comme modèle du document. Cependant, les utilisateurs peuvent fournir des balises et des règles personnalisées pour le filtrage et la correspondance.
Adresse personnelle: http://htmlcleaner.sourceforge.net/
Télécharger l'adresse: //www.vevb.com/softs/364983.html
2. Exemple de base, prenez les informations de l'aéroport à Wikipedia
html-classe-decmo.html
Html-Clean-Demo.html <! « = gbk "/> <meta http-equiv =" contenu-lang "content =" zh-cn "/> <tight> html Clean Demo </ head> <body> <div class =" d_1 "> <ul> < li> Bar </li> <li> foo </li> <li> gzz </li> </ul> </div> <div> <ul> <li> <a name = "my_href" href = " 1.html "> text- </a> </li> <li> <a name =" my_href "href =" 2.html "> text-2 </a> </a> </a> </ a> </a> </a> </a> </a> </a> </a> </a> </a> / li> <li> <a name = "my_href" href = " 3.html "> text-3 </a> </li> <li> <a name =" my_href "href =" 4.html "> text-4 </a> </li> </ul> < / div> </ body> </html>
Htmlcleanerdemo.java
package com.chenlb; TAGNODE NODE = Clear.Clean (nouveau fichier (HTML / HTML-DEMO.HTML ");" GBK "); 0) {System.out.println ("Title =" + (TagNode) NS [0]); = node.evaluatexpath ("// div [@class = 'd_1']); pour (objet sur: ns) {tagNode n = (tagNode) sur; System.out.println (" / ttext = "+ n.getText ());} System.out.println ("A:"); Node.getElementsByAttValue ("Name", "My_Href", true, true); ("href") + ", text =" + n.getText ());}}}
Les paramètres dans Cleaner.Clean () peuvent être des fichiers, URL et du contenu de chaîne. Le plus couramment utilisé doit être évaluéxpath, getElementsByAtTValue, getElementsByName Method. De plus, le HTMLCleaner est mieux compatible avec le HTML irrégulier.
Prenez les informations de l'aéroport à Wikipedia
Importation java.io.UnSupportEdEncodingException; Com.moore.util.httpclienttutil; / ** * use: todo * * @author bbdtek * / public class Parserairport {private static logger loggg = Logg = Logg erfactory.getlogger (Parserairport.class); / *** @param args * @Throws UnupportEnCingException * @throws xpatherexception * / public static void main (String [] args) lève unportEdencocexce ption, xpatherexception {string url = "http://zh.wikipedia.org/wiki/%e4%B8%ALe5e5 % 8d% 8e% e4% ba% ba% e6% b0% 91% e5% 85% b1% e5% 8c% e5% bd% e6% ba% ba% e5% ba% e5% 88 88% 97% e8% A1% a8 "; chaîne contente = httpclientUtil.gettil (). GetCon (url); htmlCleaner hc = new htmlclener (); xpath =" // div [@class = 'mw-content-ltr'] // table [@ @ @ Class = 'wikitable + sortable'] // tbody // tr [@align = 'droit'] "objet [] objarr = null; objarr = tn .evaluatexpath (xpath); if (objarr! = Null && objarr.length> 8 Objarrtr = tntr.evaluatexpath (xptr); info (str);}}}}}
Deuxièmement, la première exploration de XPATH
1. Introduction à xpath:
XPath est une langue qui recherche des informations dans les documents XML. XPATH peut être utilisé pour traverser les éléments et les attributs dans les documents XML.
2. Sélectionnez les nœuds XPath
XPath utilise l'expression de chemin pour sélectionner les nœuds dans des documents XML. Le nœud est sélectionné par le chemin ou l'étape.
L'expression de chemin la plus utile est répertoriée ci-dessous:
expression | décrire |
---|---|
nodename | Sélectionnez tous les sous-codes de ce nœud. |
/ / | Sélectionnez dans le nœud racine. |
// | Sélectionnez les nœuds dans la sélection actuelle du nœud de la sélection de nœud actuelle sans considérer leur position. |
Alors, alors | Sélectionnez le nœud actuel. |
... | Sélectionnez le nœud parent du nœud actuel. |
@ @ | Sélectionnez les attributs. |
Certaines expressions couramment utilisées
Expression de chemin | résultat |
---|---|
/ librairie / livre [1] | Sélectionnez le premier élément de livre qui appartient au sous-élément de la librairie. |
/ librairie / livre [Last ()]] | Sélectionnez le dernier élément de livre appartenant à la librairie Sous-Element. |
/ librairie / livre [Last () -1] | Sélectionnez le deuxième élément de livre appartenant à la librairie Sous-Element. |
/ librairie / livre [position () <3] | Sélectionnez les deux avant de l'élément de livre qui appartient à l'élément de la librairie. |
// title [@lang] | Sélectionnez tous les éléments de titre avec des attributs nommés Lang. |
// title [@lang = 'Eng'] | Sélectionnez tous les éléments de titre, et ces éléments ont l'attribut Lang avec Eng. |
/ librairie / livre [Prix> 35,00] | Sélectionnez tous les éléments du livre de l'élément de librairie et la valeur de l'élément de prix doit être supérieure à 35,00. |
/ librairie / livre [Prix> 35,00- / Titre | Sélectionnez tous les éléments de titre de l'élément de livre dans l'élément de librairie, et la valeur de l'élément de prix doit être supérieure à 35,00. |