Tout le monde est découragé lorsqu'il rencontre des pages HTML complexes et encombrants. Car il est difficile d'obtenir les données correspondantes.
Le moyen le plus ancien est d'essayer d'utiliser des expressions régulières.
La deuxième méthode consiste à utiliser l'organisation open source HTMLParser le package.
J'ai le code source de HTMLParser ici, qui peut obtenir tous les hyperliens
La copie de code est la suivante:
/ *
* Pour modifier ce modèle, choisissez des outils |
* Et ouvrez le modèle dans l'éditeur.
* /
test de package;
import java.util.hashmap;
importation 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;
classe publique getLinktest {
public static void main (String [] args) {
essayer {
// filtre le balise <a> à travers le filtre
Parser Parser = New Parser ("// www.vevb.com");
Nodelist nodelist = parser.extractAllNodesthatMatch (new nodeFilter () {
// implémenter cette méthode pour filtrer les balises
booléen public accepter (nœud nœud) {
if (nœud instanceof linktag) // balise
{
Retour Vrai;
}
retourne false;
}
});
// Imprimer
for (int i = 0; i <nodelist.size (); i ++) {
Linktag n = (linktag) nodelist.elementat (i);
//System.out.print (n.getStringText () + "== >>");
//System.out.println (n.ExtractLink ());
essayer {
if (n.extractLink (). equals ("// www.vevb.com")) {
System.out.println (n.ExtractLink ());
}
} catch (exception e) {
}
}
} catch (exception e) {
e.printStackTrace ();
}
}
}
La troisième méthode est également la méthode que j'utilise maintenant.
La copie de code est la suivante:
/ *
* Pour modifier ce modèle, choisissez des outils |
* Et ouvrez le modèle dans l'éditeur.
* /
package exec;
Importer java.io.file;
Importer java.io.ioException;
import org.htmlcleaner.cleanerProperties;
import org.htmlcleaner.htmlcleaner;
import org.htmlcleaner.prettyxmlserializer;
import org.htmlcleaner.tagnode;
/ **
*
* /
classe publique htmlclean {
public void CleanHtml (String htmlurl, String xmlurl) {
essayer {
Long start = System.CurrentTimemillis ();
HtmlCleaner Cleaner = new HtmlCleaner ();
CleanerProperties props = cleaner.getProperties ();
props.setUsecDataForscriptAndStyle (true);
Prophes.setRecognizeUnicoDechars (true);
Prophes.setUseEmpTyElementTags (true);
Prophes.SetAdvancedXmlesCape (true);
Prophes.setTranslateSpecialentities (true);
Prophes.setBooleAnAttributeValues ("vide");
TagNode Node = Cleaner.Clean (nouveau fichier (htmlurl));
System.out.println ("Vreme:" + (System.Currenttimemillis () - start));
Nouveau jolixmlSerializer (accessoires) .writexmltofile (nœud, xmlurl);
System.out.println ("Vreme:" + (System.Currenttimemillis () - start));
} catch (ioexception e) {
e.printStackTrace ();
}
}
}