Durante la programación o al escribir un rastreador de red, HTML a menudo debe analizarse para extraer datos útiles. Una buena herramienta es particularmente útil y puede proporcionar mucha ayuda.
Después de usarlo: se siente que HTMLCleaner es mejor que HTMLParser, especialmente el XPath de HTMLCleaner.
Hagamos un ejemplo de htmlcleaner.
1. Uso de htmlcleaner:
1. Htmlcleaner
HTMLCLEANER es un lenguaje de código abierto Java Language HTML Document Parser. HTMLCleaner puede reorganizar cada elemento del documento HTML y generar documentos HTML con buenas estructuras (bien formadas). Las reglas que sigue por defecto es similar a las reglas utilizadas por la mayoría de los navegadores web como modelo del documento. Sin embargo, los usuarios pueden proporcionar etiquetas y reglas personalizadas para filtrar y coincidir.
Dirección de la casa: http://htmlcleaner.sourceforge.net/
Descargar dirección: //www.vevb.com/softs/364983.html
2. Ejemplo básico, tome la información del aeropuerto en Wikipedia
html-class-decmo.html
Html-clip-demo.html <! : //www.w3.org/1999/xhtml "xml: lang =" zh-cn "dir =" ltr "> <high> <meta http-oquiv =" content-seype "content =" text/html; = gbk " /> <meta http-equiv =" content-language "content =" zh-cn " /> <title> html limpia demo </head> <body> <div class =" d_1 "> <ul> <ul> <ul> li> bar </li> <li> foo </li> <li> gzz </li> </ul> </div> <div> <ul> <li> <a name = "my_href" href = " 1.html "> texto- </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
paquete com.chenlb; TagNode Node = Clear.Clean (nuevo archivo ("html/html-demo.html"); "gbk"); 0) {System.out.println ("title ="+(tagNode) ns [0]); = node.evaluatexpath ("// div [@class = 'd_1']); for (object On: ns) {tagNode n = (tagNode) on; system.out.println ("/ttext = "+n.gettext ());} System.out.println ("A:"); ("href")+", text ="+n.gettext ());}}}
Los parámetros en Cleaner.Clean () pueden ser archivos, URL y contenido de cadena. El más comúnmente utilizado debe ser evaluado, GetElementsByattValue, GetElementsByName Method. Además, HTMLCleaner es mejor compatible con HTML irregular.
Tome la información del aeropuerto en Wikipedia
Importar java.io.UnsupportedEndEncodeException; Com.moore.util.httpClientUtil;/*** usa: toDo** @author bbdtek*/public class Parserairport {private static logger logg = logg = logg erfactory.getLogger (parserairport.class);/*** @param args args * @throws UnpportEndencingException * @throws xpatheRexception */public static void main (string [] args) lanza Unportedencodexce Ption, xpatheRexception {String url = "http://zh.wikipedia.org/wiki/%E4%B8% nov%E5e5 %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%E8 A1%a8 "; cadena contenido = httpClientUtil.getil (). GetCon (url); htmlCleaner hc = new htmlClener (); xpath =" // div [@class = 'mw-content-ltr'] // table [ @ Class = 'wikitable + sortable'] // tbody // tr [@align = 'right'] "objeto [] objarr = null; objarr = tn .evaluateXpath (xpath); if (objarr! = Null && objarr.length> 0) {para (objeco obj: objarr) {tagNode tntr = (tagNode) obj; Objarrtr = tntr.evaluateXpath (xptr); info (str);}}}}}
Segundo, la primera exploración de Xpath
1. Introducción a XPath:
XPATH es un idioma que busca información en documentos XML. XPATH se puede usar para atravesar elementos y atributos en documentos XML.
2. Seleccione Nodos XPath
XPATH usa la expresión de ruta para seleccionar nodos en documentos XML. El nodo es seleccionado por la ruta o el paso.
La expresión de ruta más útil se enumera a continuación:
expresión | describir |
---|---|
nombre de doden | Seleccione todos los subnodos de este nodo. |
/ / | Seleccione del nodo raíz. |
// | Seleccione los nodos en la selección del nodo actual de la selección del nodo actual sin considerar su posición. |
Entonces, entonces | Seleccione el nodo actual. |
... | Seleccione el nodo principal del nodo actual. |
@ @ | Seleccione Atributos. |
Algunas expresiones de uso común
Expresión de ruta | resultado |
---|---|
/Librería/libro [1] | Seleccione el primer elemento de libro que pertenece al sub -elemento de la librería. |
/Librería/Libro [Last ()]] | Seleccione el último elemento de libro que pertenece al sub -elemento de la librería. |
/Librería/Libro [Last () -1] | Seleccione el segundo elemento de libro que pertenece al sub -elemento de la librería. |
/Librería/libro [Position () <3] | Seleccione los dos frente de los elementos del libro de la librería que pertenecen al elemento de la librería. |
// título [@lang] | Seleccione todos los elementos de título con atributos llamados Lang. |
// Title [@lang = 'Eng'] | Seleccione todos los elementos de título, y estos elementos tienen el atributo Lang con Eng. |
/Librería/libro [Precio> 35.00] | Seleccione todos los elementos del libro del elemento de la librería, y el valor del elemento de precio debe ser mayor que 35.00. |
/Librería/libro [Precio> 35.00-/Título | Seleccione todos los elementos de título del elemento del libro en el elemento de la librería, y el valor del elemento de precio debe ser mayor que 35.00. |