JAVA 利用Jsoup 在网络获取数据

2 篇文章 0 订阅

利用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("成功获取该网页的分页所有地址!!");

    }

这里写图片描述这里写图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值