JSOUP,JAVA语言界的Jquery解析神器。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。你可以用它:
- 你可以从一个URL,文件或字符串中解析HTML;
- 可以使用DOM或CSS选择器来查找、取出数据;
- 可以可操作HTML元素、属性、文本;
同时jsoup基于MIT协议发布的,可放心使用于商业项目。
简单使用:
1.将html转换为document对象
例子: Doucument doucment=Jsoup.parse(html);
2.选择器的使用
例子:document.select(".comProfile p").html();//获取class为comProfile 下的p元素中的内容。
3.选择器的介绍
选定元素后,就可以对元素做相应操作。那么选择元素,重要的就是jsoup的选择器了:
基础选择器:
Tagname:通过标签查找元素(例如:a)
ns|tag:通过标签在命名空间查找元素,例如:fb|name查找<fb:name>元素
#id:通过ID查找元素,例如#logo
.class:通过类型名称查找元素,例如.masthead
[attribute]:带有属性的元素,例如[href]
[^attr]:带有名称前缀的元素,例如[^data-]查找HTML5带有数据集(dataset)属性的元素
[attr=value]:带有属性值的元素,例如[width=500]
[attr^=value],[attr$=value],[attr*=value]:包含属性且其值以value开头、结尾或包含value的元素,例如[href*=/path/]
[attr~=regex]:属性值满足正则表达式的元素,例如img[src~=(?i)\.(png|jpe?g)]
*:所有元素,例如*
组合选择器
el#id:带有ID的元素,例如div#logo
el.class:带某类的元素,例如. div.masthead
el[attr]:包含某属性的元素,例如a[href]
任意组合:例如a[href].highlight
ancestor child:继承自某祖(父)元素的子元素,例如.body p查找“body”块下的p元素
parent > child:直接为父元素后代的子元素,例如: div.content > p 查找类名为content的div的子元素p
,body > * 查找body元素的直系子元素
siblingA + siblingB:查找由同级元素A前导的同级元素,例如div.head + div
siblingA ~ siblingX:查找同级元素A前导的同级元素X例如h1 ~ p
el, el, el:多个选择器组合,查找匹配任一选择器的唯一元素,例如div.masthead, div.logo
伪选择器:
:lt(n):查找索引值(即DOM树中相对于其父元素的位置)小于n的同级元素,例如td:lt(3)
:gt(n):查找查找索引值大于n的同级元素,例如div p:gt(2)
:eq(n) :查找索引值等于n的同级元素,例如form input:eq(1)
:has(seletor):查找匹配选择器包含元素的元素,例如div:has(p)
:not(selector):查找不匹配选择器的元素,例如div:not(.logo)
:contains(text):查找包含给定文本的元素,大小写敏感,例如p:contains(jsoup)
:containsOwn(text):查找直接包含给定文本的元素
:matches(regex):查找其文本匹配指定的正则表达式的元素,例如div:matches((?i)login)
:matchesOwn(regex):查找其自身文本匹配指定的正则表达式的元素
注意:上述伪选择器是索引基数从0开始