Jsoup进阶之获取指定数据

使用Jsoup解析html中的指定数据,十分方便。Jsoup工具十分强大,十分好用。但网上似乎没有很好的例子,本文的目的即在于此。建议仔细阅读代码中的几个例子,Jsoup解析数据不外乎这几种类型。

第一步:将Jsoup JAR包导入项目

第二步:使用Jsoup API

1, 定位

通过div的属性值,定位到html的div(块),即所需要内容对应的块。

示例代码如下:

 

<div class="content">

2, 筛选数据

a, 通过标签头,在div中继续筛选数据。可能会找到很多的数据,这里会用到循环。见eg1。

 

//eg1:解析百度音乐             
Document doc = Jsoup.connect("http://list.mp3.baidu.com/top/singer/A.html").get();//打开链接          
Element singerListDiv = doc.getElementsByAttributeValue("class", "content").first(); //这时候该html流文件存在内存中,css selector class=content 类型          
Elements links = singerListDiv.getElementsByTag("a");//调用class=content 里面的 a 标签                 
for (Element link: links) {//使用循环                  
   String linkHref = link.attr("href");                 
   String linkText = link.text().trim();                 
   System.out.println(linkHref);              
}

b, 通过标签名,在div中筛选数据,选中此标签内的所有数据。见eg2

 

//eg2:解析万年历         
Document doc = Jsoup.connect("http://www.nongli.com/item4/index.asp?dt=2012-03-03").get();         
Element infoTable = doc.getElementsByAttributeValue("class", "table002").first();//获得信息表数据         
Elements tableLineInfos = infoTable.select("tr"); //对该信息表继续进行筛选,获得一个tr 集合 数据       
for (Element lineInfo : tableLineInfos) {             
    String lineInfoContent = lineInfo.select("td").last().text().trim(); //获得tr集合中的一个td元素     
    System.out.println("jsoup is :" + lineInfoContent);         
    }

c, 限定筛选条件。如果eg5

 

//eg5:查找html元素         
File input = new File("/tmp/input.html");         
Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/");         
Elements links = doc.select("a[href]"); // 链接         
Elements pngs = doc.select("img[src$=.png]"); // 所有 png 的图片         
Element masthead = doc.select("div.masthead").first();// div with class=masthead         
Elements resultLinks = doc.select("h3.r > a"); // direct a after h3

NOTE: <td colspan="2" class="l3">二月15日<br>壬辰年<br>癸卯月<br>丁卯日<br></td>

此处不能直接单独获得三组数据,获得的是总的三个数据。可通过正则表达式分解

3, 获取数据

即element.text()即可获得相关数据

plus: Jsoup有灵活的语法,比如通过class-value对指定div块,可通过select(div.value)找到,更多用法请参考文档! 

参考中文文档:

中文jsoup 地址


转载于:https://my.oschina.net/u/2308739/blog/483871

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值