您的位置:首页 > 移动开发 > Android开发

我的Android笔记(八)—— 使用Jsoup解析Html

2015-08-27 18:37 591 查看
想要做一个看新闻的应用,类似Cnbeta客户端的东西。大致思路如下:根据链接获取新闻列表页的html代码,然后解析,找到所有的新闻标题和新闻链接用listView显示,当点击ListView的Item再加载相应的新闻内容。

其中获取html代码,可以使用如下代码实现:

public String getHtmlString(String urlString) {
try {
URL url = new URL(urlString);
URLConnection ucon = url.openConnection();
InputStream 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 "";
}
}

传入一个网页链接,将返回此链接的html代码(String)。

然后就是解析此html代码了。经过google,发现了java的一个很好用的解析html的库,Jsoup:http://jsoup.org/

很容易使用,方法类似javascript和JQuery。只需先构建一个Jsoup的Document对象,然后就可以像使用js一个解析html了
public static String getNewsDetails(String url, String news_title, String news_date) {
Document document = null;
String data = "<body>" + "<center><h2 style='font-size:16px;'>" + news_title + "</h2></center>";
data = data + "<p align='left' style='margin-left:10px'>" + "<span style='font-size:10px;'>" + news_date
+ "</span>" + "</p>";
data = data + "<hr size='1' />";
try {
document = Jsoup.connect(url).timeout(9000).get();
Element element = null;
if (TextUtils.isEmpty(url)) {
data = "";
element = document.getElementById("memberArea");
} else {
element = document.getElementById("artibody");
}
if (element != null) {
data = data + element.toString();
}
data = data + "</body>";
} catch (IOException e) {
e.printStackTrace();
}
return data;
}

有关Jsoup的下载和更多介绍,见其官网:http://jsoup.org/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: