您的位置:首页 > 理论基础 > 计算机网络

JAVA 利用Jsoup 在网络获取数据

2017-02-10 00:51 513 查看
利用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. a5cb
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("成功获取该网页的分页所有地址!!");

}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: