最近在研究如何解析Html文件,了解到jsoup是一个基于Java的开源HTML解析器,其官网地址以下:css
http://jsoup.org/html
jsoup最大的特色,或者说,它比使用DOM4J进行HTML解析更好的缘由,是它能够采用jQuery选择器的语法,例如:正则表达式
1.Document doc=Jsoup.connect("http://en.wikipedia.org/").get();数组
2.Elements newsHeadlines=doc.select("#mp-itn b a");spa
上述代码就是获取了http://en.wikipedia.org/页面中id为mp-itn的元素下的<b>标签中的<a>标签,与jQuery选择器的结果一致。orm
为了精确的解析到html页面中的某一个标签,我特意查了一些关于jQuery选择器的资料htm
jQuery的选择器可谓强大无比,这里简单地介绍一下经常使用的元素查找方法:对象
$("#myElement")选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement,因此获得的是惟一的元素。ip
$("div")选择全部的div标签元素,返回div元素数组element
$(".myClass")选择使用myClass类的css的全部元素
$("*") 选择文档中全部的元素,能够运用多种的选择方式进行联合选择
基本过滤选择器
$("tr:first") 选择全部tr元素的第一个
$("tr:last") 选择全部tr元素的最后一个
$("A B")查找A元素下面的全部子节点,包括非直接子节点
$("form input") 选择全部的form元素中的input元素
select详解
描述:HTML代码的select写法
经过标签名来查找
Elements elements=doc.select("span");
注:经过标签来查找,直接写"标签名"就好,不须要尖括号
经过id来查找
Elements elements=doc.select("#mySpan");
注:经过id来查找,使用方法跟css指定元素同样,用#
经过class名来查找
Elements elements=doc.select(".myClass");
注:经过id来查找,使用方法跟css指定元素同样,用.
利用标签内属性名查找元素
Elements elements=doc.select("span[class=class1]span[id=id1]");
注:规则为标签名[属性名=属性值] ,标签名可写可不写,多个属性即多个[],如上。
利用标签内属性名前缀查找元素
Elements elements=doc.select("span["c1]");
注:规则为 标签名["属性名前缀],标签名可写可不写,多个属性即多个[]。
利用标签内属性名+正则表达式查找元素
Elements elements=doc.select("span[class=AB]");
注:规则为 标签名[属性名=正则表达式],以上正则表达式的意思是查找以class值以AB为开头的标签,标签可写可不写,多个属性即多个[]
利用标签文本包含某些内容来查找
Elements elements=doc.select("span:contains(3)");
注:规则为 标签名:contains(文本值)
利用标签文本包含某些内容+正则表达式来查找
Elements elements=doc.select("span:matchesOwn(3)");
注:规则为 标签名:matchesOwn(正则表达式),以上的正则表达式的意思是
以文本值以3为开头的标签
select方法返回的是一个Elements对象,里面包含着找到的全部节点,遍历Elements,经过get(index),就能够拿出具体的节点了。经过节点的text()方法,就可拿出文本值。