网络爬虫——Jsoup

一、什么是Jsoup?

Jsoup是java的HTML解析器,直接解析某个URL地址、HTML文本内容,可通过DOM、CSS等操作方法取出和操作数据。

二、Jsoup的主要功能:

1、从某个URL、文件、字符串中解析XML。

2、使用DOM、CSS选择器查找、取出数据。

3、可操作HTML元素、属性、文本。

4、基于MIT协议发布的,可放心使用于商业项目中。

三、最大的要求:

代码书写格式必须跟HTML的格式一样,不然数据获取不到。

四、弊端:

网页改版,则爬虫失效。

五、测试:

1、导入jar包:

        <!-- 配置jsoup(网络爬虫)的依赖 -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.3</version>
        </dependency>

2、获取指定数据的测试代码:

    /**
     * 获取ItTime网页上的数据
     *
     * @throws Exception
     */
    @Test
    public void getItTime() throws Exception {
        //获取整个页面文件
        Document document = Jsoup.connect("http://www.ittime.com.cn/")
                //加上cookie信息
                .cookie("auth", "token")
                //设置超时
                .timeout(30000)
                //用get()方式请求网址,也可以post()方式
                .get();
        //定位精确:body > div:nth-child(4) > div > div.wrap_left.pull-left.content_L > div > ul.thisclass
        Elements elements = document.select("body")
                .select("div:nth-child(4)")
                .select("div")
                .select("div.wrap_left.pull-left.content_L")
                .select("div")
                .select("ul.thisclass")
                .select(".newsList");
        //遍历元素值
        for (int i = 0; i < elements.size(); i++) {
            Element element = elements.get(i);
            System.out.println("图片地址:" + element.select("dt").select("a").select("img").attr("src"));
            System.out.println("跳转地址:" + element.select("dd").select("h2").select("a").attr("href"));
            System.out.println("主题文字:" + element.select("dd").select("h2").select("a").text());
            System.out.println("文字内容:" + element.select("dd").select("p").text());
            System.out.println("发表人名:" + element.select("dd").select("div").select("span").text());//有问题
            System.out.println("发表时间:" + element.select("dd").select("div").select("span").select(".year").text());
        }
    }

3、获取指定值的测试结果(根据ul里面的li标签一个一个的输出),输出结果只是一部分:

图片地址:/uploadimage/5bf00e48504fboriginal.jpg
跳转地址:/news/news_25029.shtml
主题文字:老干妈再度否认融资上市传言 儿子接班昆明搞房地产
文字内容:8月,陶华碧秘书刘涛称:“老干妈不会上市,没上市的计划。”在最新的专访中,陶华碧重申“四不原则”:不贷款、不参股、不融资、不上市。
发表人名:贵州 2018-11-17 20:49:17 2018-11-17 20:49:17 
发表时间:2018-11-17 20:49:17
图片地址:/uploadimage/5bf00bf778c7foriginal.jpg
跳转地址:/news/news_25028.shtml
主题文字:【特别报道】谁差点“杀死了”ofo?
文字内容:接近戴威人士对记者唏嘘到,假如ofo与摩拜合并或者像摩拜一样早点引入新的战略投资者,ofo的命运可能会改写,但历史无法倒退。
发表人名:钱玉娟 2018-11-17 20:39:26 2018-11-17 20:39:26 
发表时间:2018-11-17 20:39:26
图片地址:/uploadimage/5bf00ac74a508original.jpg
跳转地址:/news/news_25027.shtml
主题文字:【A股】重大违法强制退市新规出台 4项变化看8大关键点
文字内容:沪深交易所发布修订后的退市规则,明确强制退市具体违法情形和实施程序,新增社会安全类重大违法强制退市,严格重大违法强制退市程序。
发表人名:券商中国 2018-11-17 20:34:19 2018-11-17 20:34:19 
发表时间:2018-11-17 20:34:19

4、获取指定标签的测试代码:

/**
     * 获取指定一个标签的所有值(不建议使用)
     */
    @Test
    public void getALabel() {
        try {
            Element element = Jsoup.connect("https://www.163.com/")
                    //加上cookie信息
                    .cookie("auth", "token")
                    //设置超时
                    .timeout(30000)
                    //用get()方式请求网址,也可以post()方式
                    .get();
            System.out.println("获取网页所有的a标签内容:" + element.select("a").text());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

5、获取指定标签的测试结果(如果指定一个标签则会获取整个HTML页面上的该标签数据,所以不建议使用),输出结果只是一部分:

获取网页所有的a标签内容:网易首页 应用 网易新闻 网易公开课 薄荷直播 网易红彩 网易严选 邮箱大师 网易云课堂 网易考拉 快速导航 新闻 国内 国际 哒哒 图片 评论 探索 军事 本地新闻 体育 NBA CBA 综合 中超 国际足球 英超 西甲 意甲 娱乐 明星 图片 电影 资料库 电视 音乐 财经 股票 行情 产经 新股 金融 基金 商业 理财 汽车 购车 行情 选车 车型库 论坛 行业 用车 汽车图片 科技 通信 IT 互联网 移动互联网 特别策划 五道口沙龙 易语中的 专题 女人 亲子 艺术 时尚 收藏 情感 星座 美容 免费试用

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值