利用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("成功獲取該網頁的分頁所有地址!!");
}