Jsoup , синтаксический анализатор HTML, его синтаксис селектора “jquery-подобный” и “регулярное выражение” очень прост в использовании и достаточно гибок, чтобы получить все, что вы хотите. Ниже приведены три примера, показывающие, как использовать Jsoup для получения ссылок, изображений, заголовка страницы и содержимого элемента “div” с HTML-страницы.
Скачать jsoup Суп доступен в центральном хранилище Maven. Для пользователей, не являющихся Maven, просто загрузите его с веб-сайта jsoup .
org.jsoup jsoup 1.10.2
1. Захватывает Все Гиперссылки
В этом примере показано, как использовать jsoup для получения заголовка страницы и захвата всех ссылок из “google.com “.
package com.mkyong; 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(); } } }
Выход
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
Document doc = Jsoup.connect("http://anyurl.com") .userAgent("Mozilla") .get();
2. Захватывает Все Изображения
Во втором примере показано, как использовать селектор регулярных выражений Jsoup для захвата всех файлов изображений (png, jpg, gif) из “yahoo.com “.
package com.mkyong; package com.mkyong; 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(); } } }
Выход
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. Получить мета-элементы
Последний пример имитирует автономную HTML-страницу и использует jsoup для анализа содержимого. Он захватывает ключевое слово и описание ” meta “, а также элемент div с идентификатором “цвет”.
package com.mkyong; 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); } }
Выход
Meta description : The latest entertainment news Meta keyword : hollywood gossip, hollywood news This is red This is red
4. Захватывает Входные данные Формы
В этих фрагментах кода показано, как использовать Jsoup для захвата входных данных HTML-формы (имя и значение). Для получения подробной информации об использовании, пожалуйста, обратитесь к этому автоматизируйте вход на веб-сайт с помощью 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. Получить значок
Этот код показывает, как использовать значок Jsoup для избранного на странице.
package com.mkyong; 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); } }
Выход
http://example.com/image.ico
Рекомендации
Оригинал: “https://mkyong.com/java/jsoup-html-parser-hello-world-examples/”