Jsoup 之入門

一、jsoup 簡介 部分摘自 http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/ Java 程序在解析 HTML 文檔時,相信你們都接觸過 htmlparser 這個開源項目,Jsoup 功能比 htmlparser 更增強大,並且代碼實現更加簡單 jsoup 是一款 Java 的 HTML 解析器,可直接解析某個 URL 地址、HTML 文本內容。它提供了一套很是省力的 API,可經過 DOM,CSS 以及相似於 jQuery 的操做方法來取出和操做數據。 jsoup 的主要功能以下:html

  1. 從一個 URL,文件或字符串中解析 HTML;
  2. 使用 DOM 或 CSS 選擇器來查找、取出數據;
  3. 可操做 HTML 元素、屬性、文本; jsoup 是基於 MIT 協議發佈的,可放心使用於商業項目。

Jsoup的代碼至關簡潔,Jsoup總共53個類,且沒有任何第三方包的依賴,對比最終發行包9.8M的SAXON,實在算得上是短小精悍了。java

jsoup
├── examples #樣例,包括一個將html轉爲純文本和一個抽取全部連接地址的例子。    
├── helper #一些工具類,包括讀取數據、處理鏈接以及字符串轉換的工具
├── nodes #DOM節點定義
├── parser #解析html並轉換爲DOM樹
├── safety #安全相關,包括白名單及html過濾
└── select #選擇器,支持CSS Selector以及NodeVisitor格式的遍歷

二、Jsoup 使用:node

下面先寫一個簡單的示例程序開始 Jsoup 的學習之旅:(該例子實現了直接從 url 地址入手 ,經過 Jsoup 解析該 url 網頁源代碼爲一顆 dom 樹,而後從這顆樹中用 Jsoup 自帶的與 JQuery 同樣的選擇器選擇全部網頁連接地址,打印出來,最後還增長了一個遍歷整棵樹的實現)安全

public static void main(String[] args) throws IOException {
	Validate.isTrue(args.length == 1, "Usage: Supply the url to fetch!");
	String url = args[0];
	System.out.println("Fetching " + url + "..." );
	
	//fecher the url and parse it to document
	Document doc = Jsoup.connect(url).get();
	
	//use the same method like JQuery to chose what element you want
	Elements links = doc.select("a[href]");
	
	System.out.println("\nLinks " + links.size());
	
	//print to see is it work right?
	for(Element link : links) {
		System.out.println("* a: " + link.attr("abs:href") + " " + link.text().trim());
	}
	
	//use give MyNodeVisitor to NodeTraversor 
	NodeTraversor traversor = new NodeTraversor(new MyNodeVisitor());
	//traversor to traverse the element what you give
	traversor.traverse(doc);	
}

下面給出 MyNodeVisitor 的代碼:dom

public class MyNodeVisitor implements NodeVisitor {ide

@Override
public void head(Node arg0, int arg1) {
	// TODO Auto-generated method stub

}

@Override
public void tail(Node arg0, int arg1) {
	System.out.println(arg0.nodeName() + "--------" + arg1);

}

}工具

jsoup 幫助用戶實現遍歷任何一個給定的 element,遍歷過程當中具體作什麼事情,則是徹底由用戶本身決定,只要實現 NodeVisitor 便可學習

相關文章
相關標籤/搜索