Android使用jsoup解析網頁

問題:

       由於android課程大作業要實現一個空閑教室查詢相關的功能,而教室使用信息可以從教務處的網站上通過解析html來獲取。之前研究瞭一下htmlparser這個開源庫,但是發現和android提供的庫有沖突,但其在純java應用程序下是可行的。

htmlparser下載地址:http://htmlparser.sourceforge.net/

 

解決:

       用瞭另外一個開源庫jsoup解決該問題。

       jsoup下載地址:http://jsoup.org/

       jsoup 是一款 Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供瞭一套非常省力的API,可通過DOM,CSS以及類似於JQuery的操作方法來取出和操作數據。該版本包含一個支持 HTML5 的解析器分支,可確保跟現在的瀏覽器一樣解析 HTML 的方法,同時降低瞭解析的時間和內存的占用。

       可以使用類似DOM的方法來解析一個網頁,比如說,我已經下載瞭一個網頁到本地,保存為input.html,那麼通過下面的代碼,我們可以得到id為content的DOM中,所有的超鏈接。字符串linkHref得到的是該鏈接的鏈接地址,字符串linkText得到的是該鏈接的文本描述。

 

 

[java] <span style="font-size:16px;">File input = new File("/tmp/input.html"); 
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); 
 
Element content = doc.getElementById("content"); 
Elements links = content.getElementsByTag("a"); 
for (Element link : links) { 
  String linkHref = link.attr("href"); 
  String linkText = link.text(); 

</span> 
<span style="font-size:16px;">File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
  String linkHref = link.attr("href");
  String linkText = link.text();
}
</span>

還有很多其他的方法用於在各種不同情況下解析HTML。這裡就不一一列舉瞭,有興許的同學可以自己去研究一下。

 

摘自 北京大學-Google Android實驗室

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。