Jsoup-实现简单的网络爬虫

来源:互联网 发布:80端口申请书 编辑:程序博客网 时间:2024/04/29 21:39

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
原创粉丝点击