jsoup HTML-парсер привет мир примеры

jsoup HTML-парсер привет мир примеры

html parser

Jsoup, синтаксический анализатор HTML, его синтаксис селектора «jquery-like» и «regex» очень прост в использовании и достаточно гибок, чтобы получить все, что вы хотите. Ниже приведены три примера, чтобы показать вам, как использовать Jsoup для получения ссылок, изображений, заголовка страницы и содержимого элемента «div» со страницы HTML.

Download jsoup
jsoup доступен в центральном репозитории Maven. Если вы не являетесь пользователем Maven, просто загрузите его сjsoup website.

pom.xml

        
            org.jsoup
            jsoup
            1.10.2
        

В этом примере показано, как использовать jsoup для получения заголовка страницы и получить все ссылки с «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();
        }

    }

}

Выход

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
Рекомендуется указывать «userAgent» в Jsoup, чтобы избежать сообщений об ошибках HTTP 403.

    Document doc = Jsoup.connect("http://anyurl.com")
    .userAgent("Mozilla")
    .get();

2. Хватает все изображения

Во втором примере показано, как использовать селектор регулярных выражений Jsoup для получения всех файлов изображений (png, jpg, gif) с «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();
        }

    }

}

Выход

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 с идентификатором «цвет».

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); } }

Выход

Meta description : The latest entertainment news
Meta keyword : hollywood gossip, hollywood news
This is red
This is red

4. Захватывает форму входов

В этом фрагменте кода показано, как использовать Jsoup для захвата входных данных формы HTML (имя и значение). Для более подробной информации обратитесь к этомуautomate 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");

    List paramList = new ArrayList();
    for (Element inputElement : inputElements) {
        String key = inputElement.attr("name");
        String value = inputElement.attr("value");
    }

}

5. Получить Избранный Иконка

Этот код показывает, как использовать Jsoup для любимой иконки страницы.

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);
  }

}

Выход

http://example.com/image.ico