Android中如何解析網頁,擷取網頁中的元素內容

來源:互聯網
上載者:User

標籤:android   html解析器   web前端開發   webview   js   

問題:

       由於android的WebView等相關類沒有提供解析html網頁內容的介面,我們想要擷取網頁的內容並解析出我們想要的元素內容,用android的固有API是沒辦法了。

       這裡我提供兩種解析html思路:第一種,使用第三方解析html庫;第二種,使用JAVA與JS回調,通過JS解析html。


之前研究了一下htmlparser這個開源庫,但是發現和android提供的庫有衝突,但其在純java應用程式下是可行的。

htmlparser:http://htmlparser.sourceforge.net/


那麼繼續尋找,是否還有更適合android的HTML解析庫,功夫不負有心人,還是找到一款比較好的開源庫,這就是jsoup。

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

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


jsoup:http://jsoup.org/

jsoup github地址:https://github.com/scrylove/jsoup

jsoup 入門:http://blog.csdn.net/zjx409/article/details/23375565

 

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(); } 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();}


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


至於第二種思路嘛,這裡不再羅嗦,JAVA和JS互調應該大家都會,至於JS解析html那就交給WEB前端開發人員吧,我們安卓用戶端嘛,只需要得到他們解析完成,回調給我們結果就行。

課參考這篇文章:http://veikr.com/201106/android_webview_content-html.html

Android中如何解析網頁,擷取網頁中的元素內容

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.