记录一下jsoup解析html(2)

首先看一下org.jsoup.nodes所有类的继承关系,其中比较常用的就是Element和Document两个类
记录一下jsoup解析html(2)_第1张图片


现在来看一下“使用 DOM或CSS选择器来查找、取出数据”的功能
(1)DOM方式
使用DOM即直接操作html dom对象来查找、取出数据,和javascript中操作html dom类似,只不过jsoup有它自己的方法,看官方文档可以看到,截取Element类中的部分方法:
记录一下jsoup解析html(2)_第2张图片
不多说了,直接上一段采用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&regType=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类的介绍,截图如下,若想看中文介绍--> 点击看
记录一下jsoup解析html(2)_第3张图片

记录一下jsoup解析html(2)_第4张图片

记录一下jsoup解析html(2)_第5张图片



你可能感兴趣的:(html,解析,JSoup,parse)