jsoup是一个开源的html解析工具:
jsoup的对象模型由多个elements 和tetxNode组成。
其继承结构如下:
Node
|
-----------------------
| |
Element TextNode
|
Document
其中一个Element包含一个子节点集合,并拥有一个父element
分以下几个部分描述一下这个工具的用法:
1.获取远程HTML document
2.解析document
1.获取HTML document
基本方法:
//获取参数URL对应的HTML文档,第二个参数为超时时间。
public static Document parse(URL url, int timeoutMillis)
Jsoup还提供了一个方法链来解决特殊请求,具体如下:
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
通过上述方法获取到HTML Document.,然后我们就可以通过Document中适当的方法或者它父类Elment和Node的方法来获取HTML文档中的相关数据
2.解析获取到的document
将HTML解析成Docuemnt之后,就可以使用类似DOM的方法来操作。
先给一个简单的例子:
//获取百度新歌100中的数据
private static void analyesBaidu() {
String urlStr = "http://music.baidu.com/";
try {
URL urlBase = new URL(urlStr);
Document doc = Jsoup.parse(urlBase, 10000);
String topMsic = doc.select("div[monkey=new-top]").text();
System.out.println(topMsic);
} catch (Exception e) {
e.printStackTrace();
}
}
返回的结果如下:
写道
更多>> 新歌TOP100 1 到不了 李代沫 2 经过 刘若英 3 等你爱我 金池 4 平安夜 平安 5 How You .. Avril La.. 6 伤痕 金池 7 遗憾 李代沫 8 愤怒的老鸟 多亮 9 Dancing Q.. 少女时代 10 Super Girl .. 萧亚轩 播放榜单
解释一下上述代码。
通过Jsoup拿到HTML对应的Document对象,使用jsoup的select方法。获取对应的内容。
其中
//查找docuemtn中div标签下有monkey=“new-top”属性的元素
String topMsic = doc.select("div[monkey=new-top]").text();