Jeder ist entmutigt, wenn es um Komplex- und umständliche HTML -Seiten stößt. Weil es schwierig ist, die entsprechenden Daten zu erhalten.
Der älteste Weg ist es, reguläre Ausdrücke zu verwenden.
Die zweite Methode besteht darin, das Open -Source -Unternehmen HTMLParser -Paket zu verwenden.
Ich habe hier den Quellcode von HTMLParser, der alle Hyperlinks erhalten kann
Die Codekopie lautet wie folgt:
/*
* Um diese Vorlage zu ändern, wählen Sie Tools |
* und öffnen Sie die Vorlage im Editor.
*/
Pakettest;
import Java.util.hashMap;
import Java.util.map;
import org.htmlparser.node;
import org.htmlparser.nodeFilter;
import org.htmlparser.parser;
import org.htmlparser.tags.linktag;
import org.htmlparser.util.nodelist;
öffentliche Klasse getLinkTest {
public static void main (String [] args) {
versuchen {
// Filter des <a> Tags durch den Filter herausfiltern
Parser Parser = new Parser ("// www.vevb.com");
Nodelist nodelist = parser.extractallnodesthatMatch (New NodeFilter () {
// Implementieren Sie diese Methode, um Tags zu filtern
public boolean Accept (Knotenknoten) {
if (Knoteninstanz von Linktag) // Tag
{
zurückkehren;
}
false zurückgeben;
}
});
für (int i = 0; i <nodelist.size (); i ++) {
Linktag n = (linktag) nodelist.elementat (i);
//System.out.print (n.getStringText () + "== >>");
//System.out.println (n.extractLink ());
versuchen {
if (n.extractLink (). Equals ("// www.vevb.com")) {
System.out.println (n.extractLink ());
}
} catch (Ausnahme e) {
}
}
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
}
Die dritte Methode ist auch die Methode, die ich jetzt verwendet habe.
Die Codekopie lautet wie folgt:
/*
* Um diese Vorlage zu ändern, wählen Sie Tools |
* und öffnen Sie die Vorlage im Editor.
*/
Paket Exec;
Import Java.io.file;
importieren java.io.ioException;
import org.htmlCleaner.CleanerProperties;
import org.htmlCleaner.htmlCleaner;
import org.htmlcleaner.prettyxmlSerializer;
import org.htmlcleaner.tagnode;
/**
*
*/
öffentliche Klasse htmlclean {
public void CleanHtml (String htmlurl, String xmlurl) {
versuchen {
Long start = system.currentTimemillis ();
HtmlCleaner Cleaner = new htmlCleaner ();
CleanerProperties props = Cleaner.getProperties ();
props.setusecdataforscriptandStyle (true);
props.setRecognizeunicodechars (wahr);
props.setuseEmptyElementTags (true);
props.setAdvancedXmlescape (true);
props.setTranslateSpecialEntities (true);
props.setbooleanattributeValues ("leer");
Tagnode node = Cleaner.clean (neue Datei (HTMLURL));
System.out.println ("vreme:" + (System.currentTimemillis () - Start));
neuer hübschxMlSerializer (Requisiten) .WritexMltOFile (Knoten, xmlurl);
System.out.println ("vreme:" + (System.currentTimemillis () - Start));
} catch (ioException e) {
E. printstacktrace ();
}
}
}