通过jsoup对网页进行数据抓取。
2015-07-20 17:11
661 查看
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
下面是一个解析博客园首页数据的demo:
其中用到了一个JavaBean类,方面读取数据和解析数据PostItem.java,这也是为什么要时时刻刻记住面向对象的思想。
最后解析出来的结果如下:
帖子标题:常见正则表达式帖子地址:http://www.cnblogs.com/dandandeyoushangnan/p/4661977.html作者:淡淡的忧伤IT男作者地址:http://www.cnblogs.com/dandandeyoushangnan/
帖子标题:用jQuery写了一个模态框插件感觉挺好看的在博客园分享一下!帖子地址:http://www.cnblogs.com/YingYue/p/4661944.html作者:周建旭的博客作者地址:http://www.cnblogs.com/YingYue/
帖子标题:小议 html 实体解析帖子地址:http://www.cnblogs.com/52cik/p/js-entity.html作者:乱码.作者地址:http://www.cnblogs.com/52cik/
帖子标题:WPF入门教程系列十三——依赖属性(三)帖子地址:http://www.cnblogs.com/chillsrc/p/4661658.html作者:DotNet菜园作者地址:http://www.cnblogs.com/chillsrc/
帖子标题:IOS NSNotification Center 通知中心的使用帖子地址:http://www.cnblogs.com/jerehedu/p/4661608.html作者:杰瑞教育作者地址:http://www.cnblogs.com/jerehedu/
帖子标题:网络IO之阻塞、非阻塞、同步、异步总结帖子地址:http://www.cnblogs.com/Fly-Wind/p/io.html作者:Fly_Wind作者地址:http://www.cnblogs.com/Fly-Wind/
帖子标题:跨域解决方案之HTML5 postMessage帖子地址:http://www.cnblogs.com/hutuzhu/p/4661526.html作者:彼岸花在开作者地址:http://www.cnblogs.com/hutuzhu/
帖子标题:Windows Azure Virtual Machine (24) Azure VM支持多网卡功能帖子地址:http://www.cnblogs.com/threestone/p/4661454.html作者:Lei Zhang的博客作者地址:http://www.cnblogs.com/threestone/
帖子标题:UVa 673 Parentheses Balance(栈的使用)帖子地址:http://www.cnblogs.com/hfc-xx/p/4661443.html作者:黄凤成作者地址:http://www.cnblogs.com/hfc-xx/
帖子标题:ECMAScript 6教程 (三) Class和Module(类和模块)帖子地址:http://www.cnblogs.com/jasonnode/p/4661422.html作者:Jason-node作者地址:http://www.cnblogs.com/jasonnode/
帖子标题:GROUP BY的扩展帖子地址:http://www.cnblogs.com/ivictor/p/4660984.html作者:iVictor作者地址:http://www.cnblogs.com/ivictor/
帖子标题:ASP.NET MVC 过滤器开发与使用帖子地址:http://www.cnblogs.com/JinvidLiang/p/4660200.html作者:々蕞嗳の﹎作者地址:http://www.cnblogs.com/JinvidLiang/
帖子标题:JavaScript“并非”一切皆对象帖子地址:http://www.cnblogs.com/myvin/p/4660138.html作者:myvin作者地址:http://www.cnblogs.com/myvin/
帖子标题:Android CollapsingToolbarLayout帖子地址:http://www.cnblogs.com/wingyip/p/4609891.html作者:wingyip作者地址:http://www.cnblogs.com/wingyip/
帖子标题:C#基础系列——Attribute特性使用帖子地址:http://www.cnblogs.com/landeanfen/p/4642819.html作者:懒得安分作者地址:http://www.cnblogs.com/landeanfen/
帖子标题:SQL Server表分区的NULL值问题帖子地址:http://www.cnblogs.com/lyhabc/p/4660846.html作者:桦仔作者地址:http://www.cnblogs.com/lyhabc/
帖子标题:认真分析mmap:是什么 为什么 怎么用帖子地址:http://www.cnblogs.com/huxiao-tee/p/4660352.html作者:胡潇作者地址:http://www.cnblogs.com/huxiao-tee/
帖子标题:上周热点回顾(7.13-7.19)帖子地址:http://www.cnblogs.com/cmt/p/4660705.html作者:博客园团队作者地址:http://www.cnblogs.com/cmt/
帖子标题:Python开发入门与实战11-单元测试帖子地址:http://www.cnblogs.com/haozi0804/p/4660652.html作者:wuch作者地址:http://www.cnblogs.com/haozi0804/
帖子标题:【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)帖子地址:http://www.cnblogs.com/baiboy/p/orc6.html作者:伏草惟存作者地址:http://www.cnblogs.com/baiboy/
首页的十条相应的博文内容都会解析出来。就是这么犀利啊哈哈哈
下面是一个解析博客园首页数据的demo:
package com.haojiahong.test; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.haojiahong.domain.PostItem; public class ZhuaHtmlDataTest { public static void main(String[] args) throws Exception { Document doc = Jsoup.connect("http://www.cnblogs.com/").get(); Element content = doc.getElementById("post_list"); Elements datas = content.getElementsByClass("post_item"); for (Element data : datas) { PostItem postItem = new PostItem(); Elements itemBodys = data.getElementsByClass("post_item_body"); // 拿到title Elements titles = itemBodys.get(0).getElementsByClass("titlelnk"); // 拿到summary Elements summarys = itemBodys.get(0).getElementsByClass( "post_item_summary"); // 拿到底部作者及其连接 Elements foots = itemBodys.get(0).getElementsByClass("lightblue"); postItem.setTitleName(titles.get(0).text()); postItem.setTitleUrl(titles.get(0).attr("href")); postItem.setSummary(summarys.get(0).text()); postItem.setFootWriter(foots.get(0).text()); postItem.setFootWriterUrl(foots.get(0).attr("href")); System.out.println(postItem.toString()); } } }
其中用到了一个JavaBean类,方面读取数据和解析数据PostItem.java,这也是为什么要时时刻刻记住面向对象的思想。
package com.haojiahong.domain; /** * 帖子信息 * * @author haojiahong * * @createtime:2015-7-17 下午2:11:54 * * */ public class PostItem { private String titleName; private String titleUrl; private String summary; private String footWriter; private String footWriterUrl; @Override public String toString() { return "帖子标题" + titleName + "帖子地址" + titleUrl + "作者" + footWriter + "作者地址" + footWriterUrl; } public String getTitleName() { return titleName; } public void setTitleName(String titleName) { this.titleName = titleName; } public String getTitleUrl() { return titleUrl; } public void setTitleUrl(String titleUrl) { this.titleUrl = titleUrl; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getFootWriter() { return footWriter; } public void setFootWriter(String footWriter) { this.footWriter = footWriter; } public String getFootWriterUrl() { return footWriterUrl; } public void setFootWriterUrl(String footWriterUrl) { this.footWriterUrl = footWriterUrl; } }
最后解析出来的结果如下:
帖子标题:常见正则表达式帖子地址:http://www.cnblogs.com/dandandeyoushangnan/p/4661977.html作者:淡淡的忧伤IT男作者地址:http://www.cnblogs.com/dandandeyoushangnan/
帖子标题:用jQuery写了一个模态框插件感觉挺好看的在博客园分享一下!帖子地址:http://www.cnblogs.com/YingYue/p/4661944.html作者:周建旭的博客作者地址:http://www.cnblogs.com/YingYue/
帖子标题:小议 html 实体解析帖子地址:http://www.cnblogs.com/52cik/p/js-entity.html作者:乱码.作者地址:http://www.cnblogs.com/52cik/
帖子标题:WPF入门教程系列十三——依赖属性(三)帖子地址:http://www.cnblogs.com/chillsrc/p/4661658.html作者:DotNet菜园作者地址:http://www.cnblogs.com/chillsrc/
帖子标题:IOS NSNotification Center 通知中心的使用帖子地址:http://www.cnblogs.com/jerehedu/p/4661608.html作者:杰瑞教育作者地址:http://www.cnblogs.com/jerehedu/
帖子标题:网络IO之阻塞、非阻塞、同步、异步总结帖子地址:http://www.cnblogs.com/Fly-Wind/p/io.html作者:Fly_Wind作者地址:http://www.cnblogs.com/Fly-Wind/
帖子标题:跨域解决方案之HTML5 postMessage帖子地址:http://www.cnblogs.com/hutuzhu/p/4661526.html作者:彼岸花在开作者地址:http://www.cnblogs.com/hutuzhu/
帖子标题:Windows Azure Virtual Machine (24) Azure VM支持多网卡功能帖子地址:http://www.cnblogs.com/threestone/p/4661454.html作者:Lei Zhang的博客作者地址:http://www.cnblogs.com/threestone/
帖子标题:UVa 673 Parentheses Balance(栈的使用)帖子地址:http://www.cnblogs.com/hfc-xx/p/4661443.html作者:黄凤成作者地址:http://www.cnblogs.com/hfc-xx/
帖子标题:ECMAScript 6教程 (三) Class和Module(类和模块)帖子地址:http://www.cnblogs.com/jasonnode/p/4661422.html作者:Jason-node作者地址:http://www.cnblogs.com/jasonnode/
帖子标题:GROUP BY的扩展帖子地址:http://www.cnblogs.com/ivictor/p/4660984.html作者:iVictor作者地址:http://www.cnblogs.com/ivictor/
帖子标题:ASP.NET MVC 过滤器开发与使用帖子地址:http://www.cnblogs.com/JinvidLiang/p/4660200.html作者:々蕞嗳の﹎作者地址:http://www.cnblogs.com/JinvidLiang/
帖子标题:JavaScript“并非”一切皆对象帖子地址:http://www.cnblogs.com/myvin/p/4660138.html作者:myvin作者地址:http://www.cnblogs.com/myvin/
帖子标题:Android CollapsingToolbarLayout帖子地址:http://www.cnblogs.com/wingyip/p/4609891.html作者:wingyip作者地址:http://www.cnblogs.com/wingyip/
帖子标题:C#基础系列——Attribute特性使用帖子地址:http://www.cnblogs.com/landeanfen/p/4642819.html作者:懒得安分作者地址:http://www.cnblogs.com/landeanfen/
帖子标题:SQL Server表分区的NULL值问题帖子地址:http://www.cnblogs.com/lyhabc/p/4660846.html作者:桦仔作者地址:http://www.cnblogs.com/lyhabc/
帖子标题:认真分析mmap:是什么 为什么 怎么用帖子地址:http://www.cnblogs.com/huxiao-tee/p/4660352.html作者:胡潇作者地址:http://www.cnblogs.com/huxiao-tee/
帖子标题:上周热点回顾(7.13-7.19)帖子地址:http://www.cnblogs.com/cmt/p/4660705.html作者:博客园团队作者地址:http://www.cnblogs.com/cmt/
帖子标题:Python开发入门与实战11-单元测试帖子地址:http://www.cnblogs.com/haozi0804/p/4660652.html作者:wuch作者地址:http://www.cnblogs.com/haozi0804/
帖子标题:【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)帖子地址:http://www.cnblogs.com/baiboy/p/orc6.html作者:伏草惟存作者地址:http://www.cnblogs.com/baiboy/
首页的十条相应的博文内容都会解析出来。就是这么犀利啊哈哈哈
相关文章推荐
- JavaScript 判断浏览器类型及版本
- Javascript 多浏览器兼容性问题及解决方案
- js 动画1
- JSON 数据的系统解析
- JSP乱码
- JSP乱码问题
- Jsp页面获取项目名称
- javascript复制
- 页面传值JS解析
- javascript深入理解js闭包
- jsp页面保存用户选择的两种思路
- JSP的运行机制
- js 选项卡制作
- javascript模拟title提示效果
- js 禁止输入非数字
- 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
- eval函数
- ==和=== 的区别
- JavaScript 动态加载脚本和样式
- JSON中的特殊字符