JAVA 利用Jsoup 在網絡獲取數據

利用Jsoup可以更容易更快的獲取數據

下面我演示幾個事例:
一:在電影天堂獲取一個電影的下載地址

package com.mashensoft.jsoup;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * 在電影天堂獲取一個電影的下載地址
 * @author PeicongHe
 *http://www.dytt8.net/html/gndy/dyzz/20170129/53098.html
 *步驟: 
 *  獲取網頁文本 
 *  通過匹配屬性價值獲取元素
 *  獲取屬性
 * 這裏只能獲取一個下載地址,如果想獲取多個下載地址,就要用到循環
 */
public class ShowTest {
    public static void test1() {
        Document doc;
        try {
            doc = Jsoup.connect("http://www.dytt8.net/html/gndy/dyzz/20170129/53098.html").get();
            // 獲取網頁文本
            Elements elements = doc.getElementsByAttributeValueMatching("href", "ftp");
            //通過匹配屬性的內容獲取元素
            for (int i = 0; i < elements.size(); i++) {
                System.out.println("元素的長度:  "+elements.size());// 元素的長度爲1
                Element element = elements.get(i);
                System.out.println("獲取的數據: "+element.attr("href"));
                // 顯示元素下的屬性
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args){
        test1();
    }
}

這裏寫圖片描述
用一行代碼實現上面功能

    public static void test1x() {
        try {
    System.out.println(Jsoup.connect("http://www.dytt8.net/html/gndy/dyzz/20170129/53098.html").get()
                    .getElementsByAttributeValueMatching("href", "ftp").get(0).attr("href"));
            // 獲取網頁文本 ->通過匹配屬性價值獲取元素 ->獲取屬性內容
            System.out.println("成功獲取屬性內容");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

二:讀取電影天堂某個頁面裏所有電影的下載地址
http://www.dytt8.net/html/gndy/dyzz/index.html

    /**
     * 功能:讀取http://www.dytt8.net/html/gndy/dyzz/index.html 頁面裏所有電影下載地址 
     * 步驟:
     * ->獲取網頁文本 ->通過類型那個獲取元素組(獲取到的元素是多個的) ->在元素組裏獲取第i個元素
     */
    public static void test2() {
        try {
            Document doc = Jsoup.connect("http://www.dytt8.net/html/gndy/dyzz/index.html").get();
            // 獲取網頁文本
            Elements elements = doc.getElementsByClass("ulink");
            // 通過類型那個獲取元素組(獲取到的元素是多個的)
            System.out.println("捕獲元素個數: "+elements.size());
            // 輸出元素長度
            for (int i = 0; i < elements.size(); i++) {
                Element element = elements.get(i);
                // 在元素組裏獲取第i個元素
                System.out.println(" 第"+i+"地址:"+element.attr("href"));
                // 打印出第i個元素的屬性內容
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("成功捕獲所有電影地址!");
    }
    public static void main(String[] args){
        test2();
    }

這裏寫圖片描述

三、獲取一個頁面裏的分頁欄
http://www.dytt8.net/html/gndy/dyzz/index.html
這裏寫圖片描述

    /**
     * 功能:讀取http://www.dytt8.net/html/gndy/dyzz/index.html 
     * 頁面裏的分頁欄 
     * 步驟: 
     * ->獲取網頁文本
     * ->通過類型那個獲取元素組(獲取到的元素是多個的) ->在元素組裏獲取第i個元素
     */
    public static void test3() {
        try {
            Document doc = Jsoup.connect("http://www.dytt8.net/html/gndy/dyzz/index.html").get();
            // 獲取網頁文本
            Elements elements = doc.getElementsByAttributeValueMatching("name", "sldd").get(0)
                    .getElementsByTag("option");
            // 通過匹配屬性內容獲取元素
            // 再通過標籤獲取元素
            System.out.println("獲取元素成功!");
            System.out.println("該分頁欄分頁數: "+elements.size());
            // 打印分頁的長度
            for (int i = 0; i < elements.size(); i++) {
                Element element = elements.get(i);
                System.out.println("第"+(i+1)+"分頁地址: "+element.attr("value"));
                // 打印元素的屬性內容
            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("成功獲取該網頁的分頁所有地址!!");

    }

這裏寫圖片描述這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章