注意:在Eclipse裏使用Jsoup解析文檔時要在項目中導入Jsoup的jar包!
Jsoup是Java的一個解析和遍歷HTML的API,可以把一個HTML字符串解析成一個Document文檔,並且會盡可能的得到一個標準的解析結果,會自動補充缺失的結束標記。
例如:"<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>標籤,最終解析的結果爲<html><head></head><body>Jsoup</body></html>
例如:
package com.daxiang.myjsoup;
import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class JsoupTest1 {
public static void main(String args[]) throws IOException{
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()得到的結果相同,二者區別有待進一步驗證