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

JSoup解析HTML使用笔记(一)

2013-04-02 16:24 267 查看
学习java有3个多月了,一直想在学习过程中写点什么,把自己的成长历程记录下来,但是一直不知道写些什么。这次我终于下定决心写出自己的第一篇文章,督促自己学习,希望大神勿喷,如果哪位大神有闲心阅读了一下,如有错误,希望能够指出,在下感激不尽,也希望能和像我一样的初学者共同学习进步。

Jsoup是java的一个解析和遍历HTML的API,可以把一个HTML字符串解析成一个Document文档,并且会尽可能的得到一个标准的解析结果。

会自动补充缺失的结束标记。(eg:"<p>Jsoup<p>Jsoup"会解析为"<p>Jsoup</p><p>Jsoup</p>")

官方文档说会创建隐式标签,即("<td>Jsoup</td>"会解析为<table><tr><td>Jsoup</td></tr></table>"),但是经验证并不会创建,而是会忽略td标签,解析为("Jsoup");

会自动创建完整的HTML页面结构,即自动创建<html><head><body>标签。

例如:

public static void main(String[] args){
String html1="<p>Jsoup<p>LKZERO";
Document doc=Jsoup.parse(html1);
System.out.println(doc.toString());
System.out.println("--------");

String html2="<td>LKZERO</td><br>" +
"<tr><td>LKZERO<td></tr><br />" +
"<table><tr><td>JSOUP</td></tr></table>";
Document doc2=Jsoup.parse(html2);
System.out.println(doc2.toString());
}


得到结果:

<html>
<head></head>
<body>
<p>Jsoup</p>
<p>LKZERO</p>
</body>
</html>
--------
<html>
<head></head>
<body>
LKZERO
<br />LKZERO
<br />
<table>
<tbody>
<tr>
<td>JSOUP</td>
</tr>
</tbody>
</table>
</body>
</html>


Jsoup解析得到的Document文档是由Document,Element,Node和TextNode组成的,其中Document继承Element,Element继承Node,TextNode继承Node。

parse()静态方法:Jsoup解析HTML字符串使用parse静态方法,无论HTML字符串是什么内容,都会得到一个Document文档,至少会包含<html><head><body>三个元素。

parseBodyFragment()静态方法:经我测试与parse()得到的结果相同,不太明白二者区别。官方文档上说此方法把任何用户输入的HTML都会被解析为body部分,但是我测试得到的结果并不是这样。希望有大神能够指导。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: