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

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

第二步:使用Jsoup API

1, 定位

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

示例代码如下:

  1. <div class="content">

2, 筛选数据

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

  1. //eg1:解析百度音乐
  2. Document doc = Jsoup.connect("http://list.mp3.baidu.com/top/singer/A.html").get();
  3. Element singerListDiv = doc.getElementsByAttributeValue("class", "content").first();
  4. Elements links = singerListDiv.getElementsByTag("a");
  5. for (Element link: links) {
  6. String linkHref = link.attr("href");
  7. String linkText = link.text().trim();
  8. System.out.println(linkHref);
  9. }

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

  1. //eg2:解析万年历
  2. Document doc = Jsoup.connect("http://www.nongli.com/item4/index.asp?dt=2012-03-03").get();
  3. Element infoTable = doc.getElementsByAttributeValue("class", "table002").first();
  4. Elements tableLineInfos = infoTable.select("tr");
  5. for (Element lineInfo : tableLineInfos) {
  6. String lineInfoContent = lineInfo.select("td").last().text().trim();
  7. System.out.println("jsoup is :" + lineInfoContent);
  8. }

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

  1. //eg5:查找html元素
  2. File input = new File("/tmp/input.html");
  3. Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/");
  4. Elements links = doc.select("a[href]"); // 链接
  5. Elements pngs = doc.select("img[src$=.png]"); // 所有 png 的图片
  6. Element masthead = doc.select("div.masthead").first();// div with class=masthead
  7. 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)找到,更多用法请参考文档!

以下给出所有示例代码:

  1. package com.mike.activity;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import org.jsoup.Connection;
  5. import org.jsoup.Jsoup;
  6. import org.jsoup.nodes.Document;
  7. import org.jsoup.nodes.Element;
  8. import org.jsoup.select.Elements;
  9. import android.app.Activity;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.View;
  13. import android.widget.TextView;
  14. public class JsoupDemoActivity extends Activity {
  15. /** Called when the activity is first created. */
  16. private StringBuilder sb ;
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. sb = new StringBuilder();
  22. TextView textView = (TextView) findViewById(R.id.textView1);
  23. try {
  24. //          //eg1:解析百度音乐
  25. //          Document doc = Jsoup.connect("http://list.mp3.baidu.com/top/singer/A.html").get();
  26. //          Element singerListDiv = doc.getElementsByAttributeValue("class", "content").first();
  27. //          Elements links = singerListDiv.getElementsByTag("a");
  28. //
  29. //          for (Element link: links) {
  30. //              String linkHref = link.attr("href");
  31. //              String linkText = link.text().trim();
  32. //              System.out.println(linkHref);
  33. //          }
  34. //
  35. //
  36. //          //eg2:解析万年历
  37. //          Document doc = Jsoup.connect("http://www.nongli.com/item4/index.asp?dt=2012-03-03").get();
  38. //          Element infoTable = doc.getElementsByAttributeValue("class", "table002").first();
  39. //          Elements tableLineInfos = infoTable.select("tr");
  40. //          for (Element lineInfo : tableLineInfos) {
  41. //              String lineInfoContent = lineInfo.select("td").last().text().trim();
  42. //              System.out.println("jsoup is :" + lineInfoContent);
  43. //          }
  44. //eg3:解析指定段落的内容----注意此代码中的语法:<div class="artHead">
  45. //          Document doc = Jsoup.connect("http://passover.blog.51cto.com").get();
  46. //          Elements divs = doc.select("div.artHead");
  47. //          for (Element div: divs) {
  48. //              System.out.println(div.select("h3[class=artTitle]"));
  49. //          }
  50. //eg4:
  51. //          Document doc = Jsoup.connect("http://passover.blog.51cto.com").get();
  52. //          //eg5:查找html元素
  53. File input = new File("/tmp/input.html");
  54. Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/");
  55. Elements links = doc.select("a[href]"); // 链接
  56. Elements pngs = doc.select("img[src$=.png]"); // 所有 png 的图片
  57. Element masthead = doc.select("div.masthead").first();// div with class=masthead
  58. Elements resultLinks = doc.select("h3.r > a"); // direct a after h3
  59. //          //test
  60. //          File input = new File("D:/test.html");
  61. //           Document doc = Jsoup.parse(input,"UTF-8","http://www.oschina.net/");
  62. /*
  63. * 项目数据准备
  64. */
  65. //eg5:万年历:http://www.zdic.net/nongli/2012-3-7.htm
  66. //data1:dayFav(宜)
  67. //          Document doc = Jsoup.connect("http://www.zdic.net/nongli/2012-3-7.htm").get();
  68. //          Element dayFav = doc.getElementsByAttributeValue("class", "ly2").first();
  69. //          Elements dayFavItems = dayFav.getElementsByTag("a");
  70. //          for (Element dayFavItem:dayFavItems) {
  71. //              System.out.println(dayFavItem.text());
  72. //          }
  73. //data2:dayUnfav(忌)
  74. //          Element dayUnfav = doc.getElementsByAttributeValue("class", "lj2").first();
  75. //          Elements dayUnfavItems = dayUnfav.getElementsByTag("a");
  76. //          for (Element dayUnfavItem:dayUnfavItems) {
  77. //              System.out.println(dayUnfavItem.text());
  78. //          }
  79. //data3:taiSheng(胎神)
  80. //          Element taiSheng = doc.getElementsByAttributeValue("class", "lts2").first();
  81. //          System.out.println(taiSheng.text());
  82. //data4:chong sha(冲煞信息)
  83. //          Element chong = doc.getElementsByAttributeValue("class", "lcs").first();
  84. //          Element sha = doc.getElementsByAttributeValue("class", "lcs").get(1);
  85. //          System.out.println(chong.text());
  86. //          System.out.println(sha.text());
  87. //data5:zhengChong(正冲)和zhiXing(值星)
  88. //          Element zhengChong = doc.getElementsByAttributeValue("class", "lzc2").first();
  89. //          Element zhiXing = doc.getElementsByAttributeValue("class", "lzx2").first();
  90. //          System.out.println(zhengChong.text());
  91. //          System.out.println(zhiXing.text());
  92. //data6:godFav(吉神宜趋)
  93. //          Element godUnfav = doc.getElementsByAttributeValue("class", "js2").first();
  94. //          System.out.println(godUnfav.text());
  95. //data7:godUnfav(凶神宜忌)
  96. //          Element godFav = doc.getElementsByAttributeValue("class", "xs2").first();
  97. //          System.out.println(godFav.text());
  98. //data8:pengZuBaiJi(彭祖百忌)
  99. //          Element pengZuBaiJi = doc.getElementsByAttributeValue("class", "pz2").first();
  100. //          System.out.println(pengZuBaiJi.text());
  101. //data9:wuXing(五行)
  102. //          Element wuXing = doc.getElementsByAttributeValue("class", "wuh2").first();
  103. //          System.out.println(wuXing.text());
  104. } catch (IOException e) {
  105. // TODO Auto-generated catch block
  106. e.printStackTrace();
  107. }
  108. }
  109. }
本文出自 “小新专栏” 博客,请务必保留此出处http://mikewang.blog.51cto.com/3826268/830021

Jsoup进阶之获取指定数据相关推荐

  1. js 用下标获取map值_js map方法处理返回数据,获取指定数据简写方法

    map方法处理返回数据,获取指定数据简写方法 前言 后端返回数据为数组列表时,通常比较全面,包含了很多不需要的数据,可以通过 map 方法处理返回数据,筛选出想要的数据 例如 // 返回数据 res ...

  2. GPS模块(G28U7FTTL)(2)——获取指定信息

    经过上面文章的学习,大家肯定会简单的获取GPS信号了,这次,我们需要获取指定数据.如下图所示,简单的接收数据,你会发现他们都是很多类型的数据,现在假如只接受下面画红色框的数据. 接收完成后的数据如下图 ...

  3. pandas使用query函数和sample函数、使用query函数筛选dataframe中的特定数据行并使用sample函数获取指定个数的随机抽样数据

    pandas使用query函数和sample函数.使用query函数筛选dataframe中的特定数据行并使用sample函数获取指定个数的随机抽样数据(query dataframe and ran ...

  4. django获取指定列的数据

    django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://do ...

  5. python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据

    文章目录: 1 数据说明 2 把数据集文件信息使用python pandas保存成csv文件 3 使用python pandas 读取csv的每行.每列数据 1 数据说明 1.在test_data目录 ...

  6. nodejs 向mongodB获取指定数目的数据

    nodejs 向mongodB获取指定数目的数据 原理:通过向nodejs服务器端发送请求,nodejs 收到请求向mongodB读取五条数据,在控制台中打印出来: nodejs段代码(新建一个文件s ...

  7. 将query存进数组 php,thinkphp下通过QueryList获取网站指定数据并封装成数组,存入数据库...

    1.安装QueryList插件到自己的项目中,一般在vendor文件夹中 [geandeiMac:Html gean$ cd /Volumes/程序开发/www/Html/myapp/ [geande ...

  8. linuxPci驱动获取指定设备bus、device以及devfn数据方式

    在vxworks系统中,调用pciFindDevice()函数可以直接获取到指定设备的bus.deviceNo以及devfn数据信息.相对于linux系统,vxworks编写驱动相对简单一些. lin ...

  9. 文章id 文章标题点击量php,zblogphp函数:GetPost 获取指定ID/标题/别名的文章或页面数据...

    zblogphp辅助函数GetPost可以通过ID或别名获得指定文章或页面数据,包括文章的标题.内容.发布日期.浏览量.URL地址.文章评论.所属分类等页面数据. GetPost 函数 通过GetPo ...

最新文章

  1. linux 入门-1
  2. chvg改变vg中LV的数量
  3. 微信小程序获取当前时间戳、获取当前时间、时间戳加减
  4. java方向好看的书
  5. 【Spring源码】Spring Transactional事务:传播机制(Propagation) 介绍 和 源码剖析
  6. (开源)XMind2TestCase一个高效的测试用例设计解决方案
  7. Visual Studio 2019报4996错误的解决办法
  8. Windows创建的基本含义和进程的进程的内核
  9. 智能实验室-全能优化(Guardio) 4.0.0.691 beta 11
  10. 绿色版Tomcat的配置
  11. 2018服务商口碑榜Top50(3月)重磅出炉
  12. 部署Gbase 8c的系统要求
  13. 非线性规划MATLAB求解原理,专题六--非线性规划介绍及其Matlab求解方法.ppt
  14. 2022年天猫女王节的优惠力度比肩618年中大促购物节
  15. POJ 2263 Heavy Cargo
  16. 针对安卓app的爬虫路程
  17. 一篇搞懂OOA/OOD/OOP的区别
  18. 7-20 表达式转换 (25 分)
  19. 税控服务器信息维护,税控服务器管理系统操作介绍(IE6版).ppt
  20. SQL_电力抢修工程插入数据语句

热门文章

  1. 程序员的思维修炼9——超越专家
  2. 什么是平板电脑的杀手锏?
  3. 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序
  4. 超级无敌的TcpDump
  5. 《Ray Tracing in One Weekend》——Chapter 8: Metal
  6. 语言程序设计第4版黄洪艺_庞皓计量经济学第4版题库
  7. Matplotlib库-Python数据可视化
  8. c语言如何在坐标输出,tc 如何在指定坐标处 输出bmp图片??
  9. 2018年php框架,2018年的7个热门网站开发框架
  10. python语言写九九乘法表_怎么使用Python语言写一个九九乘法表?