首先看一下org.jsoup.nodes所有类的继承关系,其中比较常用的就是Element和Document两个类
现在来看一下“使用
DOM或CSS选择器来查找、取出数据”的功能
(1)DOM方式
使用DOM即直接操作html dom对象来查找、取出数据,和javascript中操作html dom类似,只不过jsoup有它自己的方法,看官方文档可以看到,截取Element类中的部分方法:
不多说了,直接上一段采用DOM方式解析的代码,其中baiduHtml.txt为百度首页html的文本文件,目的是查找id为content节点包含的所有<a>链接:
public static void main(String[] args) throws IOException {
File file = new File("baiduHtml.txt");
Document document = Jsoup.parse(file, "UTF-8");
Element contentEle = document.getElementById("content");
Elements aEles = contentEle.getElementsByTag("a");
System.out.println("size:"+aEles.size());
for (Element e : aEles) {
String href = e.attr("href");
String text = e.text();
System.out.println(text + "---" + href);
}
}
输出结果如下:
size:17
搜索设置---http://www.baidu.com/gaoji/preferences.html
登录---https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F
注册---https://passport.baidu.com/v2/?reg®Type=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F
新 闻---http://news.baidu.com
贴 吧---http://tieba.baidu.com
知 道---http://zhidao.baidu.com
音 乐---http://music.baidu.com
图 片---http://image.baidu.com
视 频---http://video.baidu.com
地 图---http://map.baidu.com
手写---#
拼音---#
关闭---#
百科---http://baike.baidu.com
文库---http://wenku.baidu.com
hao123---http://www.hao123.com
更多>>---http://www.baidu.com/more/
DOM方式比较符合经常用javascript操作html dom的习惯,但是jsoup更为强大的是还具有类似jquery的CSS选择器方式(据网上说的,反正jquery我也没用过)
(2)CSS选择器方式
什么都不说,先来一段采用CSS选择器方式解析的代码来简单的认识一下CSS选择器,目的是获取所有以http://开头的<a>链接,最后输出这些<a>链接的href属性
public static void main(String[] args) throws IOException {
File file = new File("baiduHtml.txt");
Document doc = Jsoup.parse(file, "UTF-8");
Elements elements = doc.select("a[href^=http://]");
System.out.println("size:" + elements.size());
for (Element e : elements) {
System.out.println(e.attr("href"));
}
}
输出结果如下:
size:19
http://www.baidu.com/gaoji/preferences.html
http://news.baidu.com
http://tieba.baidu.com
http://zhidao.baidu.com
http://music.baidu.com
http://image.baidu.com
http://video.baidu.com
http://map.baidu.com
http://baike.baidu.com
http://wenku.baidu.com
http://www.hao123.com
http://www.baidu.com/more/
http://www.baidu.com/cache/sethelp/index.html
http://www.baidu.com/search/baidukuaijie_mp.html
http://e.baidu.com/?refer=888
http://top.baidu.com
http://home.baidu.com
http://ir.baidu.com
http://www.miibeian.gov.cn
再来一些简单的小例子说明:
Elements links = doc.select("a[href]"); // 具有href 属性的a链接
Elements pngs = doc.select("img[src$=.png]"); //所有引用png图片的元素
Element masthead =doc.select("div.masthead").first(); //找出定义了class=masthead 的div元素的第一个
Elements resultLinks = doc.select("h3.r>a"); //direct a after h3
关于其它的选择器语法,可以查看官方文档Selector类的介绍,截图如下,若想看中文介绍-->
点击看