Durante a programação ou ao escrever um rastreador de rede, o HTML geralmente precisa ser analisado para extrair dados úteis. Uma boa ferramenta é particularmente útil e pode fornecer muita ajuda.
Depois de usá -lo: parece que o htmlcleaner é melhor que o htmlparser, especialmente o xpath of htmlcleaner.
Vamos fazer um exemplo de htmlcleaner.
1. HTMLCLEANER Uso:
1. Htmlcleaner
HTMLCLEANER é um analisador de documentos HTML de idioma Java de código aberto. O HTMLCLEANER pode reorganizar cada elemento do documento HTML e gerar documentos HTML com boas estruturas (bem formadas). As regras que segue por padrão são semelhantes às regras usadas pela maioria dos navegadores da Web como o modelo do documento. No entanto, os usuários podem fornecer tags e regras personalizadas para filtrar e corresponder.
Endereço residencial: http://htmlcleaner.sourceforge.net/
Endereço para download: //www.vevb.com/softs/364983.html
2. Exemplo básico, pegue as informações do aeroporto na Wikipedia
html-classe-decmo.html
Html-cuan-deMo.html <! : //www.w3.org/1999/xhtml "xml: lang =" zh-cn "dir =" ltr "> <digh> <meta http-equiv =" content-seype "content =" text/html; = gbk " /> <meta http-equiv =" content-language "content =" zh-cn " /> <title> html limpo demo </ad Head> <body> <div class =" d_1 "> <ul> <ul Li> Bar </li> <li> Foo </li> <li> gzz </li> </ul> </div> <div> <ul> <li> <a nome = "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 nome = "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
pacote com.chenlb; TagNode Node = Clear.clean (novo arquivo ("html/html-deMo.html"); "gbk"); 0) {System.out.println ("title ="+(tagnode) ns [0]); = Node.EvaluatexPath ("// div [@class = 'd_1']); para (objeto em: ns) {tagNode n = (tagnode) em; system.out.println ("/ttext = "+n.getText ());} System.out.println ("A:"); ("href")+", text ="+n.getText ());}}}
Os parâmetros no limpador.clean () podem ser arquivos, URL e conteúdo da string. O mais comumente usado deve ser avaliado, getElementsbyAttValue, getElementsByName Method. Além disso, o htmlcleaner é melhor compatível com HTML irregular.
Pegue as informações do aeroporto na Wikipedia
Importar Java.io.unsupa Com.moore.util.httpClientUtil;/*** Usos: TODO** @Author bbdtek*/public class Parserairport {private Static Logg = Logg = Logg ErFactory.getLogger (parserairport.class);/*** @param args args args) * @THOWS UNUPORPORTEDENCINGEXCECTIMENTO * @THOWS XPathrexception */public static void main (string [] args) lança UNLOUTEDENCODEXCE, Xpatherexception {String url = "http://zh.wikipedia.org/wiki/pediods %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 "; string conteúdo = httpclientUtil.getil (). GetCon (url); htmlcleaner hc = new htmlclener (); xpath =" // div [@class = 'mw-content-ltr'] // tabela [ @ @ Class = 'wikitable + classable'] // tbody // tr [@align = 'direita'] 0) {para (objeto obj: objarr) {tagnode tntr = (tagnode) obj; Objartr = tntr.evaluatexpath (xptr); info (str);}}}}}
Segundo, a primeira exploração de xpath
1. Introdução ao XPath:
XPath é um idioma que procura informações em documentos XML. O XPath pode ser usado para atravessar elementos e atributos nos documentos XML.
2. Selecione XPath nós
O XPath usa a expressão do caminho para selecionar nós nos documentos XML. O nó é selecionado pelo caminho ou etapa.
A expressão mais útil do caminho está listada abaixo:
expressão | descrever |
---|---|
Nodename | Selecione todos os sub -nodos deste nó. |
/ / / | Selecione no nó raiz. |
// | Selecione os nós na seleção atual de nós da seleção atual de nós sem considerar sua posição. |
Então, então | Selecione o nó atual. |
... | Selecione o nó pai do nó atual. |
@ @ | Selecione atributos. |
Algumas expressões comumente usadas
Expressão do caminho | resultado |
---|---|
/Livraria/livro [1] | Selecione o primeiro elemento do livro que pertence ao sub -elemento da livraria. |
/Livraria/livro [Last ()]] | Selecione o último elemento do livro pertencente ao sub -elemento da livraria. |
/Livraria/livro [Last () -1] | Selecione o segundo elemento do livro pertencente ao sub -elemento da livraria. |
/Livraria/livro [Position () <3] | Selecione os dois front do elemento do livro que pertence ao elemento da livraria. |
// título [@lang] | Selecione todos os elementos do título com atributos chamados Lang. |
// título [@lang = 'Eng'] | Selecione todos os elementos do título e esses elementos têm o atributo Lang com o Eng. |
/Livraria/Livro [Preço> 35,00] | Selecione todos os elementos do livro do elemento da livraria e o valor do elemento de preço deve ser maior que 35,00. |
/Livraria/Livro [Preço> 35.00-/Título | Selecione todos os elementos do título do elemento do livro no elemento da livraria e o valor do elemento de preço deve ser maior que 35,00. |