Android开发之利用jsoup解析HTML页面的方法
程序员文章站
2024-02-28 22:06:58
本文实例讲述了android利用jsoup解析html页面的方法。分享给大家供大家参考,具体如下:
这节主要是讲解jsoup解析html页面。由于在android开发过程...
本文实例讲述了android利用jsoup解析html页面的方法。分享给大家供大家参考,具体如下:
这节主要是讲解jsoup解析html页面。由于在android开发过程中,不可避免的涉及到web页面的抓取,解析,展示等等,所以,在这里我主要展示下利用jsoup jar包来抓取cnbeta.com网站的话题分类的实例。
下面是主要的代码,由于使用及其简单,我这里就不再多说了:
package com.android.web; import java.io.bufferedinputstream; import java.io.ioexception; import java.io.inputstream; import java.net.malformedurlexception; import java.net.url; import java.net.urlconnection; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import org.apache.http.util.bytearraybuffer; import org.apache.http.util.encodingutils; import org.jsoup.jsoup; import org.jsoup.nodes.document; import org.jsoup.nodes.element; import org.jsoup.select.elements; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.listview; import android.widget.simpleadapter; public class _getwebresoureactivity extends activity { document doc; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); findviewbyid(r.id.button1).setonclicklistener(new onclicklistener() { @override public void onclick(view v) { load(); } }); } protected void load() { try { doc = jsoup.parse(new url("http://www.cnbeta.com"), 5000); } catch (malformedurlexception e1) { e1.printstacktrace(); } catch (ioexception e1) { e1.printstacktrace(); } list<map<string, string>> list = new arraylist<map<string, string>>(); elements es = doc.getelementsbyclass("main_navi"); for (element e : es) { map<string, string> map = new hashmap<string, string>(); map.put("title", e.getelementsbytag("a").text()); map.put("href", "http://www.cnbeta.com" + e.getelementsbytag("a").attr("href")); list.add(map); } listview listview = (listview) findviewbyid(r.id.listview1); listview.setadapter(new simpleadapter(this, list, android.r.layout.simple_list_item_2, new string[] { "title","href" }, new int[] { android.r.id.text1,android.r.id.text2 })); } /** * @param urlstring * @return */ public string gethtmlstring(string urlstring) { try { url url = null; url = new url(urlstring); urlconnection ucon = null; ucon = url.openconnection(); inputstream instr = null; instr = ucon.getinputstream(); bufferedinputstream bis = new bufferedinputstream(instr); bytearraybuffer baf = new bytearraybuffer(500); int current = 0; while ((current = bis.read()) != -1) { baf.append((byte) current); } return encodingutils.getstring(baf.tobytearray(), "gbk"); } catch (exception e) { return ""; } } }
注意代码:elements es = doc.getelementsbyclass("main_navi");一定要找对位置,才能得到正确的结果。下面就是主要的预览效果:
更多关于android相关内容感兴趣的读者可查看本站专题:《android调试技巧与常见问题解决方法汇总》、《android开发入门与进阶教程》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
上一篇: Java非静态成员变量之死循环(详解)