初學JSoup

  jsoup 是一款 Java 的 HTML 解析器,可直接解析某個 URL 地址、HTML 文本內容。它提供了一套很是省力的 API,可經過 DOM,CSS 以及相似於 jQuery 的操做方法來取出和操做數據。css

jsoup 的API地址:http://tool.oschina.net/apidocs/apidoc?api=jsoup-1.6.3html

jsoup 的主要功能以下:java

  1. 從一個 URL,文件或字符串中解析 HTML;
  2. 使用 DOM 或 CSS 選擇器來查找、取出數據;
  3. 可操做 HTML 元素、屬性、文本;

jsoup 是基於 MIT 協議發佈的,可放心使用於商業項目。api

jsoup 的主要類層次結構以下圖所示:cookie


(一)文檔輸入post

  • 直接從字符串中輸入 HTML 文檔
1 String html = "<html><head><title> 開源中國社區 </title></head><body><p> 這裏是 jsoup 項目的相關文章 </p></body></html>";
2 Document mDocument = Jsoup.parse(html);
  •  從URL直接加載HTML文檔(無參)
        Document mDocument2 = Jsoup.connect("http://www.oschina.net/").get();
        String title = mDocument2.title();

 

  •  從URL直接加載HTML文檔(有參)
        Document mDocument3 = Jsoup.connect("http://www.oschina.net/")
                .data("query", "Java")        //請求參數
                .userAgent("I ’ m jsoup")    //設置User-Agent
                .cookie("auth", "token")    //設置cookie
                .timeout(3000)                //設置連接超時時間
                .post();                    //使用POST方法訪問URL

 

  • 從文件中加載 HTML 文檔
        File input = new File("C:/wamp/www/HtmlParser/1.html");
        Document mDocument4 = Jsoup.parse(input, "utf-8","http://www.oschina.net/");

 

  請你們注意最後一種 HTML 文檔輸入方式中的 parse 的第三個參數,爲何須要在這裏指定一個網址呢(雖然能夠不指定,如第一種方法)?由於 HTML 文檔中會有不少例如連接、圖片以及所引用的外部腳本、css 文件等,而第三個名爲 baseURL 的參數的意思就是當 HTML 文檔使用相對路徑方式引用外部文件時,jsoup 會自動爲這些 URL 加上一個前綴,也就是這個 baseURL。
例如: <a href=/project> 開源軟件 </a> 會被轉換成 <a href=http://www.oschina.net/project> 開源軟件 </a>。spa


(二)DOM方式解析並提取HTML元素.net

 

  這部分涉及一個 HTML 解析器最基本的功能,但 jsoup 使用一種有別於其餘開源項目的方式——選擇器,咱們將在最後一部分詳細介紹 jsoup 選擇器,本節中你將看到 jsoup 是如何用最簡單的代碼實現。code

  不過 jsoup 也提供了傳統的 DOM 方式的元素解析,看看下面的代碼:htm

        // 從文件中加載 HTML 文檔
        File input = new File("C:/wamp/www/HtmlParser/1.html");
        Document mDocument4 = Jsoup.parse(input, "utf-8","http://www.oschina.net/");
        
        Element content = mDocument4.getElementById("content-wrap");
        Elements links = content.getElementsByTag("a");
        for (Element link:links) {
            String linkHref = link.attr("href");
            String linkText = link.text();
        }

  你可能會以爲 jsoup 的方法似曾相識,沒錯,像 getElementById 和 getElementsByTag 方法跟 JavaScript 的方法名稱是同樣的,功能也徹底一致。你能夠根據節點名稱或者是 HTML 元素的 id 來獲取對應的元素或者元素列表。
  與 htmlparser 項目不一樣的是,jsoup 並無爲 HTML 元素定義一個對應的類,通常一個 HTML 元素的組成部分包括:節點名、屬性和文本,jsoup 提供簡單的方法供你本身檢索這些數據,這也是 jsoup 保持瘦身的緣由。
  而在元素檢索方面,jsoup 的選擇器簡直無所不能,

 

 

(三)修改數據

(四)HTML文檔清理

(五)選擇器解析並提取HTML元素

 

 

 

 

 

 

 

===========================參考網址===========================

http://blog.csdn.net/fover717/article/details/8314217

http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/

 

http://www.cnblogs.com/rhythmK/p/4037572.html

===========================參考網址===========================

相關文章
相關標籤/搜索