Todo mundo está desanimado ao encontrar páginas HTML complexas e pesadas. Porque é difícil obter os dados correspondentes.
A maneira mais antiga é tentar usar expressões regulares.
O segundo método é usar o pacote HTMLPARSER de organização de código aberto.
Eu tenho o código -fonte do htmlparser, que pode obter todos os hiperlinks
A cópia do código é a seguinte:
/*
* Para alterar este modelo, escolha Ferramentas |
* e abra o modelo no editor.
*/
teste de pacote;
importar java.util.hashmap;
importar java.util.map;
importar org.htmlparser.node;
importar org.htmlparser.nodeFilter;
importar org.htmlparser.parser;
importar org.htmlparser.tags.linktag;
importar org.htmlparser.util.nodelist;
classe pública getLinktest {
public static void main (string [] args) {
tentar {
// filtrar a tag <a> através do filtro
Analiser parser = novo analiser ("// www.vevb.com");
Nodelist nodelist = parser.extractallnodesthatmatch (new NodeFilter () {
// Implemente este método para filtrar tags
public boolean Acep (nó nó) {
if (node instanceof linktag) // tag
{
retornar true;
}
retornar falso;
}
});
// Imprimir
for (int i = 0; i <nodelist.size (); i ++) {
Linktag n = (linkTag) nodelist.Elementat (i);
//System.out.print (n.getStringText () + "== >>");
//System.out.println (n.extractLink ());
tentar {
if (n.extractLink (). Equals ("// www.vevb.com")) {
System.out.println (n.extractLink ());
}
} catch (Exceção e) {
}
}
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
}
O terceiro método também é o método que eu tenho usado agora.
A cópia do código é a seguinte:
/*
* Para alterar este modelo, escolha Ferramentas |
* e abra o modelo no editor.
*/
pacote executivo;
importar java.io.file;
importar java.io.ioException;
importar org.htmlcleaner.cleanerProperties;
importar org.htmlcleaner.htmlcleaner;
importar org.htmlcleaner.prettyxmlSerializer;
importar org.htmlcleaner.tagnode;
/**
*
*/
classe pública htmlclean {
public void CleanHtml (String htmlurl, string xmlurl) {
tentar {
long start = system.currenttimemillis ();
Limpador htmlcleaner = new htmlcleaner ();
Props CleannerProperties = limpador.getProperties ();
props.setUseCDataForScriptAndStyle (true);
props.setRecognizeunicodechars (true);
props.SetUseEmEptyElementTags (true);
props.setAdvancedXmlescape (true);
ProPs.SetTranslatesPialEntities (True);
props.setBooleanattributeValues ("vazio");
Nó de tagNode = limpador.clean (novo arquivo (htmlurl));
System.out.println ("vreme:" + (System.CurrentTimemillis () - Start));
novo prettyxmlSerializer (adereços) .WritexMLTOFILE (NODE, XMLURL);
System.out.println ("vreme:" + (System.CurrentTimemillis () - Start));
} catch (ioexception e) {
E.PrintStackTrace ();
}
}
}