Jsoup解析html的基本用法

          這周學習了Jsoup的基本用法,感覺Jsoup解析html文本和dom解析xml大同小異。學習過xml解析的朋友如果學習Jsoup上手很快。沒學過的朋友也沒關係,Jsoup很簡單下面我們一起來學習:

    一、Jsoup的介紹:

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某個 URL 地址、HTML 文本內容。它提供了一套非常省力的 API,可通過 DOMCSS 以及類似於 jQuery 的操作方法來取出和操作數據。(該文字介紹從Jsoup官網翻譯而來) ,

    二、Jsoup的功能:

     解析Html文本,將要解析的Html轉化爲Document的Dom樹,通過Document將其html的標籤轉化爲Element元素。通過Element元素獲得標籤的屬性和內容。

     三、Jsoup的使用步驟

       1、由於Jsoup是屬於第三方架包,所以肯定要下載該架包這裏給出該架包的url(https://jsoup.org/download),朋友們可以根據url下載架包

       2、導入架包,將架包導入到自己測試的項目中,如果用android studio的朋友可能在這一步要小心了,這裏可能會出錯。遇到問題別灰心,根據提示信息就可以查找出問題的原因。主要的原因是因爲Jsoup架包的文件覆蓋了android的v4或v7裏的文件。這個問題的解決方法網上很多。這裏就不詳細介紹了。

      3、和其他使用架包一樣,導入到項目中了就可以使用jsoup解析Html文本了,解析Html文本的那個要獲得文本,該怎樣獲得呢,jsoup提供了好幾種獲得Html文本的方法。下面我們將一一介紹;

         3.1、 獲得html字符並將其轉換爲Document對象(該對象與Dom解析xml的Document類似),我們後面講根據解析的Document對象解析Html的標籤,獲得其標籤的屬性值和內容。 

/*
* 解析Html字符串
* */
public Document parseString(String htmlStr) {


    return Jsoup.parse(htmlStr);
}


/*
* 通過baseUrl將相對URL轉換爲絕對URL解析Html字符
* */
public Document parseString(String htmltr, String charsetName) {
    return Jsoup.parse(htmltr, charsetName);
}

/*
* 通過Parser解析Html字符串
* */
public Document parseString(String htmlStr, String baseUrl, Parser parser) {
    return Jsoup.parse(htmlStr, baseUrl, parser);
}

     

         3.2、 獲得html文件並將其轉換爲Document對象

/*
* 通過文件解析Html文本
* */
public Document parseFile(File file, String charSet) throws IOException {
    return Jsoup.parse(file, charSet);

}

       3.3、根據URL獲取網絡Html文本並將其解析爲Document對象

     

/*
* 通過get請求Url,通過Url解析Html文本
* */
public Document parseUrlByGet(String url) throws IOException {
    Document document = null;
    document = Jsoup.connect(url)//連接到網絡
            .timeout(3000)//設置超時時間
            .get();//通過get方法請求
    return document;
}

/*
* 通過post請求Url,通過Url解析Html文本
* */
public Document parseUrlByPost(String url) throws IOException {

    Document document = Jsoup.connect(url)
            .timeout(3000)
            .post();
    return document;
}

     ps(以上是jsoup獲得不同類型的Htm文本的幾種方法,JsoupAPI還提供了其他的方法,讀者可以自己去參考APIk瞭解其他的方法)

   4、獲得Document就可以解析其標籤,將其標籤轉化爲Element元素,以下是幾種將其標籤轉化爲Element元素的方法

 /*
 * 通過解析的document文件獲得html的標籤之以標籤名獲得標籤
 *
 * */
 public Elements getElementByTag(Document document, String tag) {

     //獲得Htmltag爲名的標籤,例如“title”標籤
     return document.getElementsByTag(tag);

 }


 /*
* 通過解析的document文件獲得html的標籤之以標籤的id獲得標籤,精準獲取
*
* */
 public Element getElementById(Document document, String id) {

     //獲得Htmltagid的標籤
     return document.getElementById(id);
 }



 /*
 * 通過選擇器去解析html,獲得滿足選擇器的標籤
 * */
 public Elements getElementBySelect(Document document ,String selecttor){

     //返回獲得滿足選擇器的Element,如slecttor = "div"
     return document.select(selecttor);
 }
 

   5、通過Element元素獲得標籤的屬性和內容


Elements Elements = bodyElement.select("a");
Log.d("tag","titles = " + Elements.toString());

//遍歷Elements,解析其標籤
for (Element title:Elements) {
    //解析其標籤下的屬性
    org.jsoup.nodes.Attributes titleAttr = title.attributes();
    for (Attribute attr: titleAttr) {
      //獲得屬性名
        String key = attr.getKey();
        Log.d("tag","key = " + key);
       
        if ("href".equals(key)){
            //獲得屬性值
            String link = attr.getValue();
            Log.d("tag","url = " + link);
        }
    }
    //獲得標籤的文本內容
    Log.d("tag","title = " + title.text());

}


      通過以上的方法就可以解析Html文檔獲得想要的內容了,雖然 上面的步驟可以解決相當一本分問題,當時是這僅是學習Jsoup的入門知識,想要更多瞭解Jsoup的讀者可以參考Jsoup的官方文檔,看文檔是學習的最好方法,這是我們程序猿必備的條件之一。這裏我給大家找出Jsoup的官方文檔(https://jsoup.org/)和中文文檔(http://www.open-open.com/jsoup/parsing-a-document.htm)的URL。


























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章