jsoup HTML parser hello world exemples
Jsoup, un analyseur HTML, sa syntaxe de sélecteur «jquery-like» et «regex» est très facile à utiliser et suffisamment flexible pour obtenir ce que vous voulez. Voici trois exemples pour vous montrer comment utiliser Jsoup pour obtenir des liens, des images, le titre de la page et le contenu de l'élément "div" d'une page HTML.
Download jsoup
Le jsoup est disponible dans le référentiel central Maven. Pour les utilisateurs non Maven, téléchargez-le simplement à partir dejsoup website.
pom.xml
org.jsoup jsoup 1.10.2
1. Récupère tous les hyperliens
Cet exemple vous montre comment utiliser jsoup pour obtenir le titre de la page et récupère tous les liens de "google.com".
HTMLParserExample1.java
package com.example; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; public class HTMLParserExample1 { public static void main(String[] args) { Document doc; try { // need http protocol doc = Jsoup.connect("http://google.com").get(); // get page title String title = doc.title(); System.out.println("title : " + title); // get all links Elements links = doc.select("a[href]"); for (Element link : links) { // get the value from href attribute System.out.println("\nlink : " + link.attr("href")); System.out.println("text : " + link.text()); } } catch (IOException e) { e.printStackTrace(); } } }
Sortie
title : Google
link : http://www.google.com.my/imghp?hl=en&tab=wi
text : Images
link : http://maps.google.com.my/maps?hl=en&tab=wl
text : Maps
//omitted for readability
Note
Il est recommandé de spécifier un "userAgent
" dans Jsoup, pour éviter les messages d'erreur HTTP 403.
Document doc = Jsoup.connect("http://anyurl.com") .userAgent("Mozilla") .get();
2. Saisit toutes les images
Le deuxième exemple vous montre comment utiliser le sélecteur d'expressions régulières Jsoup pour récupérer tous les fichiers image (png, jpg, gif) de «yahoo.com».
HTMLParserExample2.java
package com.example; package com.example; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; public class HTMLParserExample2 { public static void main(String[] args) { Document doc; try { //get all images doc = Jsoup.connect("http://yahoo.com").get(); Elements images = doc.select("img[src~=(?i)\\.(png|jpe?g|gif)]"); for (Element image : images) { System.out.println("\nsrc : " + image.attr("src")); System.out.println("height : " + image.attr("height")); System.out.println("width : " + image.attr("width")); System.out.println("alt : " + image.attr("alt")); } } catch (IOException e) { e.printStackTrace(); } } }
Sortie
src : http://l.yimg.com/a/i/mntl/ww/events/p.gif
height : 50
width : 202
alt : Yahoo!
src : http://l.yimg.com/a/i/ww/met/intl_flag_icons/20111011/my_flag.gif
height :
width :
alt :
//omitted for readability
3. Obtenez des éléments Meta
Le dernier exemple simule une page HTML hors ligne et utilise jsoup pour analyser le contenu. Il saisit le mot-clé et la description «meta», ainsi que l'élément div avec l'id de «color».
HTMLParserExample3.java
package com.example; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class HTMLParserExample3 { public static void main(String[] args) { StringBuffer html = new StringBuffer(); html.append(""); html.append(""); html.append(""); html.append(""); html.append("Hollywood Life "); html.append(""); html.append(""); html.append(""); html.append(""); html.append("This is red/>"); html.append(""); html.append(""); Document doc = Jsoup.parse(html.toString()); //get meta description content String description = doc.select("meta[name=description]").get(0).attr("content"); System.out.println("Meta description : " + description); //get meta keyword content String keywords = doc.select("meta[name=keywords]").first().attr("content"); System.out.println("Meta keyword : " + keywords); String color1 = doc.getElementById("color").text(); String color2 = doc.select("div#color").get(0).text(); System.out.println(color1); System.out.println(color2); } }
Sortie
Meta description : The latest entertainment news Meta keyword : hollywood gossip, hollywood news This is red This is red
4. Saisit les entrées du formulaire
Ces extraits de code vous montrent comment utiliser Jsoup pour récupérer des entrées de formulaire HTML (nom et valeur). Pour plus de détails sur l'utilisation, veuillez vous référer à ceautomate login a website with Java.
public void getFormParams(String html){ Document doc = Jsoup.parse(html); //HTML form id Element loginform = doc.getElementById("your_form_id"); Elements inputElements = loginform.getElementsByTag("input"); ListparamList = new ArrayList (); for (Element inputElement : inputElements) { String key = inputElement.attr("name"); String value = inputElement.attr("value"); } }
5. Obtenir l'icône Fav
Ce code vous montre comment utiliser Jsoup pour l'icône préférée de la page.
jSoupExample.java
package com.example; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class jSoupExample { public static void main(String[] args) { StringBuffer html = new StringBuffer(); html.append(""); html.append(""); html.append(""); //html.append(""); html.append(""); html.append(""); html.append("something"); html.append(""); html.append(""); Document doc = Jsoup.parse(html.toString()); String fav = ""; Element element = doc.head().select("link[href~=.*\\.(ico|png)]").first(); if(element==null){ element = doc.head().select("meta[itemprop=image]").first(); if(element!=null){ fav = element.attr("content"); } }else{ fav = element.attr("href"); } System.out.println(fav); } }
Sortie
http://example.com/image.ico