jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
jsoup 1.6.2 发布了,改版包含很多的 bug 修复,松散的 XML 解析模式,功能调整以及内存的改进。
详情请看官方发行说明:
http://jsoup.org/news/release-1.6.2
jsoup的主要功能如下:
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
示例代码:
Document doc =Jsoup.connect("http://example.com") .data("query","Java") .userAgent("Mozilla") .cookie("auth","token") .timeout(3000) .post();
从文件中解析的方法:
File input =newFile("/tmp/input.html");Document doc =Jsoup.parse(input,"UTF-8","http://example.com/");
类试js jsoup提供下面方法:
-
getElementById(String id) 用id获得元素
-
getElementsByTag(String tag) 用标签获得元素
-
getElementsByClass(String className) 用class获得元素
同时还提供下面的方法提供获取兄弟节点:
siblingElements()
, firstElementSibling()
, lastElementSibling()
;nextElementSibling()
, previousElementSibling()
用下面方法获得元素的数据:
-
attr(String key)
获得元素的数据 -
attr(String key, String value)
t设置元素数据 -
attributes()
获得所以属性 -
id()
,className()
classNames() 获得id class得值
-
text()获得文本值
-
text(String value)
设置文本值 -
html()
获取html -
html(String value)设置html
-
outerHtml()
获得内部html -
data()获得数据内容
操作html提供了下面方法:
File input =newFile("/tmp/input.html");Document doc =Jsoup.parse(input,"UTF-8","http://example.com/");Elements links = doc.select("a[href]");// a with hrefElements pngs = doc.select("img[src$=.png]"); // img with src ending .pngElement masthead = doc.select("div.masthead").first(); // div with class=mastheadElements resultLinks = doc.select("h3.r > a");// direct a after h3
支持的操作有下面这些:
-
tagname 操作tag
-
ns|tag ns或tag
-
#id 用id获得元素
-
.class 用class获得元素
-
[attribute] 属性获得元素
-
[^attr]
: 以attr开头的属性 -
[attr=value] 属性值为
value -
[attr^=value]
,[attr$=value]
,[attr*=value]
-
[attr~=regex]正则
-
*
:所以的标签
选择组合
-
el#id el和id定位
-
el.class e1和class定位
-
el[attr]
e1和属性定位 -
ancestor child
ancestor下面的child