Html快速解析工具——Jsoup使用
2016-04-03 22:10
525 查看
想想挺久没有写代码了,最近没事自己做了一个新闻查看器,新闻来源是去各个网站上抓取的,既然要抓取网页上的东西,就要去对网页的html进行解析,一开始使用正则表达式去去掉不用的部分,后来发现自己的正则学的不是很好,抓取的时候遇到了很多困难,于是想到了xml解析,可是后来听说有Json这个库好像很好用,去看了下,发现有很多不错的功能。 好了,废话说的有点多,开始进入正题吧!
一、函数介绍
Element元素可以用于提取你需要的内容Elements:是Element列表,可以用于存放多个Element
Document:是Element的子类,与Element功能类似
1、Jsoup.parse(String html) //这个方法可以获取到一个Document对象,html是一个带html标签的字符串
2、Jsoup.connect(String url).get()//用于直接获取一个网页的Document对象
Document可以使用头String()的可以使其转化为一个字符串,字符串的内容就是该页面的带html标签的源码(Element也一样)
3、Document与Element对象皆有如下的方法,可以用以下的方法提取需要的内容
getElementsByTag(String tag);//根据标签提取元素里面对应标签的内容,返回一个Elements对象,可以用for循环提取出没一个Element的内容 getElementByClass(String class);//根据标签提取元素里面对应类的内容,返回的也是ELements对象 getElementById(String id);//是根据id去提取Element对象的,因为在html里,id只有一个所以获取的是单个的Element对象
举例介绍:
假如你要去获取百度网的所有a标签的元素,可以这么做
//定义一个网站链接 String url = "http://www.baidu.com"; //获取Document对象 Document doc = Jsoup.connect().get(); //用Document对象获取元素集合Elements Elements elements = doc.getElementsByTag("a"); //用于存放连接地址的值 List<String> hrefs = new ArrayList<String>(); //获取所有元素中的href属性的值 for(Element e:elements){ hrefs.add(e.attr("href")); } //用于存放所有的标签包裹内容的值 List<String> names = new ArrayList<String>(); //获取所有元素中的text属性的值 for(Element e:elements){ hrefs.add(e.text()); }
假如已经通过Document或是Element的toString()将其转换为字符串对象同样可以用Jsoup.parse(String html)将其转化为Document对象进行操作
2、取出自己定义的html字符串的mychoose类里面的内容
//自定义html字符串 String html = "<html> <body> <div class="mychoose"> 这是一段文字 </div> <div class="mychoose"> 这是第二段文字 </div> <p class="mychoose"> 这是p标签的文字 </p> </body> </html>" //获得Document对象 Document doc = Jsoup.parse(html); //根据class取出Elements集合 Elements elements = doc.getElementsByClass("mychoose"); //取出第一个Element对象 ELement first = elements.get(0); String firstStr = first.toString();//这句话提取出来的字符串是<div class="mychoose">这是一段文字</div> //同样也可以用first.text()提取对应标签包裹的内容字符串
3、删除script和style标签的内容
//假设原来的带html标签字符串是html; //获取Document对象 Document doc = Jsoup.parse(html); //获取全部的带script内容 Elements olds = doc.getElementsByTag("script"); //遍历替换可以将对应字段转化为空 for(Element o:olds){ html = html.replace(o.toString,""); } //删除style方法同上
其实一些工具灵活运用你会发现更多功能,可能讲的有什么不对的地方请见谅。
相关文章推荐
- JavaScript的函数
- 实体类和JSON对象之间相互转化
- JavaScript 价格正则表达式
- JS获取当前浏览器(Chrome,Firefox)
- ArcGIS API for JavaScript 学习笔记 (一) --第一个WebGIS应用程序
- JSON解析方案
- jsp forward 动作标签
- tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
- JavaScript编写人机对战五子棋(二)
- BZOJ 1443 [JSOI2009]游戏Game
- JavaScript之变量与常量
- js防刷新的倒计时
- JavaScript编写人机对战五子棋(一)
- JSP课程设计感悟
- Javascript中数组的常用方法。
- JavaScript版HashMap的简单实现——通过原型prototype扩展
- 关于js中的原型
- 【笔记】 《js权威指南》- 第9章 类和模块 - 9.5 类和类型
- js+json实现ajax实例
- JsonFormat 弹窗控件