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()方法,就可拿出文本值。
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()方法,就可拿出文本值。
相关文章推荐
- dialog使用方法(同一页面,调用一个js代码,实现多个不同样式的弹窗)
- 深入分析 Javascript 单线程
- JavaScript小技巧
- Javascript中Element元素定位详解
- 减少js对性能的影响
- JS的 escape、encodeURI 、encodeURIComponent 编码与解码
- 在js中json遍历List<E>
- js点击弹框优酷视频
- javascript中的function(){}
- javascript动态获取登录时间和在线时长
- Json数据整理(org-Json + json-lib)
- 深度复制JavaScript对象
- js中关于事件捕获与事件冒泡的小实验
- javascript之点击按钮实现放大、缩小字体
- js 动态生成JSON
- javascript动态加载js文件
- jsp+ajax局部刷新校验验证码,onblur触发校验
- 13.5.2.javascript内存与性能与13.6事件模拟
- 网页中通过js修改img的src属性刷新图片时,图片缓存问题现象表述及问题解决
- 基于javascript实现动态时钟效果