您的位置:首页 > Web前端 > JavaScript

jsoup基础

2016-02-25 15:30 507 查看
最近在研究如何解析Html文件,了解到jsoup是一个基于Java的开源HTML解析器,其官网地址如下:
http://jsoup.org/
jsoup最大的特点,或者说,它比使用DOM4J进行HTML解析更好的原因,是它可以采用jQuery选择器的语法,例如:

1.Document doc=Jsoup.connect("http://en.wikipedia.org/").get();

2.Elements newsHeadlines=doc.select("#mp-itn b a");

上述代码就是获取了http://en.wikipedia.org/页面中id为mp-itn的元素下的<b>标签中的<a>标签,与jQuery选择器的结果一致。

为了精确的解析到html页面中的某一个标签,我特地查了一些关于jQuery选择器的资料

jQuery的选择器可谓强大无比,这里简单地介绍一下常用的元素查找方法:

$("#myElement")选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement,所以得到的是唯一的元素。

$("div")选择所有的div标签元素,返回div元素数组

$(".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()方法,就可拿出文本值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: