Jsoup-实现简单的网络爬虫

Jsoup的简介:
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

Jsoup的功能:
1.从一个URL,文件或字符串中解析HTML;
2.使用DOM或CSS选择器来查找、取出数据;
3.可操作HTML元素、属性、文本;

做了一个这样的demo,先看效果图:


哈哈

(只能上传2M以下,这个真悲催,录了好多次,就这一次小于2M,将就看吧,是一个瀑布流样式,实现下拉刷新,上拉加载更多…)

资源来源:美女图片:http://www.topit.me/tag/美女?p=2

选取截取部分:


这里写图片描述

在class属性为catalog的div中,所包含的每一个class属性为”e m”的div下都包含一个图片,前端中称div为一个盒子模型,打开其中的一个div,我们可以看到里面的img标签,我们通过这个标签中的src属性,就可以拿到图片的地址。

通过Jsoup我们拿到整个html文档,通过查找class为”e m”的标签,我们拿到一个集合,集合包含整个class属性为”e m”的列表,遍历整个集合,得到其中的每一个div,html中叫这个div为元素也叫标签,整个集合得到的是一个Elements,每一个元素是Element,通过这个Element,再次调用getElementsByTagName,根据img标签,可以获取这个img元素,最后根据这个元素,获取属性为src的内容,就可以取到这个图片地址了,当然还可以获取里面的所有属性信息,你高兴就好….(不明白的就在下面拍砖,我再给你讲讲)。

对应代码:

try {  //调用网络操作获取返回来的html 
        json = Helper.getStringFromUrl(url);
    } catch (IOException e) { 
        e.printStackTrace();           
    }
if(null != json){
       document= Jsoup.parse(json);
       Elements es=null;
       Elements elements=document.getElementsByClass("e m");
       for (Element element : elements) {
       DuitangInfo newsInfo = new DuitangInfo();
       String imageUrl=element.getElementsByTag("img").attr("data-original");
if(imageUrl.toString().trim()==null||imageUrl.toString().trim().equals(""){
        imageUrl=element.getElementsByTag("img").attr("src");
        newsInfo.setIsrc(imageUrl);                               
}else {
        newsInfo.setIsrc(imageUrl);
       }
                        //图片如果有高度的话,可以取得图片高度,在设置
       newsInfo.setHeight(200+(new Random().nextInt(200)));
       duitangs.add(newsInfo);
   }
}

也可以这么写:

 //在异步中调用
 Connection conn=Jsoup.connect("url");     
 Document document=conn.get();//同样可以得到document

总结: Jsoup通过操作网络返回的或者本地读取的html,生成一个DoM树对象,在对这个Dom数进行遍历解析,提取里面想要获取内容、属性值的就可以了,拿到数据,设置在view上,完成操作…
有问题欢迎拍砖,多多指教…..

转载请标明:http://blog.csdn.net/zxyudia/article/details/61917964

代码下载地址:https://github.com/amelons/Jsoup

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值