Todos se desaniman al encontrar páginas HTML complejas y engorrosas. Porque es difícil obtener los datos correspondientes.
La forma más antigua es tratar de usar expresiones regulares.
El segundo método es utilizar el paquete HTMLParser de la organización de código abierto.
Tengo el código fuente de htmlparser aquí, que puede obtener todos los hipervínculos
La copia del código es la siguiente:
/*
* Para cambiar esta plantilla, elija herramientas |
* y abra la plantilla en el editor.
*/
prueba de paquete;
import java.util.hashmap;
import 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;
clase pública getLinkTest {
public static void main (string [] args) {
intentar {
// filtrar la etiqueta <a> a través del filtro
Parser parser = nuevo parser ("// www.vevb.com");
Nodelist nodelist = parser.extractallnodesthatmatch (new NodeFilter () {
// Implementar este método para filtrar etiquetas
Public Boolean Acept (nodo de nodo) {
if (nodo instanceOf linktag) // etiqueta
{
devolver verdadero;
}
devolver falso;
}
});
// Imprimir
para (int i = 0; i <nodelist.size (); i ++) {
Linktag n = (linktag) nodelist.Elementat (i);
//System.out.print (n.getStringText () + "== >>");
//System.out.println (n.extractLink ());
intentar {
if (n.extractLink (). Equals ("// www.vevb.com")) {
System.out.println (n.ExtractLink ());
}
} capt (excepción e) {
}
}
} capt (excepción e) {
E.PrintStackTrace ();
}
}
}
El tercer método también es el método que he estado usando ahora.
La copia del código es la siguiente:
/*
* Para cambiar esta plantilla, elija herramientas |
* y abra la plantilla en el editor.
*/
paquete ejecutivo;
import java.io.file;
import java.io.ioException;
importar org.htmlcleaner.cleanerProperties;
importar org.htmlcleaner.htmlcleaner;
importar org.htmlcleaner.prettyxmlSerializer;
importar org.htmlcleaner.tagnode;
/**
*
*/
clase pública htmlclean {
public void cleanHtml (string htmlurl, string xmlurl) {
intentar {
Long Start = System.CurrentTimemillis ();
HTMLCLEANER Cleaner = new htmlCleaner ();
CleanerProperties Props = Cleaner.getProperties ();
Props.SetUsecDataForScriptAnstyle (verdadero);
propss.setRecognizizeUnicodeChars (verdadero);
Props.SetUseEptyElementTags (verdadero);
Props.SetAdVancedXMlescape (verdadero);
Props.SetTranslatesPecialEntities (verdadero);
Props.SetBooleanAttributeValues ("vacío");
TagNode node = limpier.clean (nuevo archivo (htmlurl));
System.out.println ("Vreme:" + (System.CurrentTimemillis () - inicio));
nuevo bittlexmlSerializer (accesorios) .WritExmltofile (nodo, xmlurl);
System.out.println ("Vreme:" + (System.CurrentTimemillis () - inicio));
} Catch (ioException e) {
E.PrintStackTrace ();
}
}
}