Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
本篇文章主要介绍了手把手教学 Android 用 jsoup 解析 html 实例,jsoup 是一款 Java 的 HTML 解析器。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
找到需要的,例如上图这个 "美食天下" ,可以看到 "美食天下" 是放在以 <div class="top-bar"id="J_top_bar"> 为节点的 <a title=" 美食天下 "中,要获取这个" 美食天下 ",代码可以这样写:
- try {
- //从一个URL加载一个Document对象。
- Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();
- //选择"美食天下"所在节点
- Elements elements = doc.select("div.top-bar");
- //打印 <a>标签里面的title
- Log.i("mytag", elements.select("a").attr("title"));
- } catch(Exception e) {
- Log.i("mytag", e.toString());
- }
接下来看一下打印出来的结果:
Jsoup.connect(String url) 方法从一个 URL 加载一个 Document 对象。如果从该 URL 获取 HTML 时发生错误,便会抛出 IOException,应适当处理。
一旦拥有了一个 Document,你就可以使用 Document 中适当的方法或它父类 Element 和 Node 中的方法来取得相关数据。
- public class Element extends Node public class Document extends Element
很多文章都是说一大堆原理然后放出一个简单的例子,就跟我上面简单的打了一个 log 一样,然后发现用起来的时候是没那么简单的。为了大家能不看文档也可以直接使用 (并且看不懂那一大堆标签也可以用),我决定再举一个例子 (其实也就是比上面多打几个 log):
下图红色框框是我们要获取的数据,可以看到他们对应的节点就是蓝色圆圈里面的 <div class="xxx">
废话不多说上代码
- try {
- //还是一样先从一个URL加载一个Document对象。
- Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();
- //"椒麻鸡"和它对应的图片都在<div class="pic">中
- Elements titleAndPic = doc.select("div.pic");
- //使用Element.select(String selector)查找元素,使用Node.attr(String key)方法取得一个属性的值
- Log.i("mytag", "title:" + titleAndPic.get(1).select("a").attr("title") + "pic:" + titleAndPic.get(1).select("a").select("img").attr("data-src"));
- //所需链接在<div class="detail">中的<a>标签里面
- Elements url = doc.select("div.detail").select("a");
- Log.i("mytag", "url:" + url.get(i).attr("href"));
- //原料在<p class="subcontent">中
- Elements burden = doc.select("p.subcontent");
- //对于一个元素中的文本,可以使用Element.text()方法
- Log.i("mytag", "burden:" + burden.get(1).text());
- } catch(Exception e) {
- Log.i("mytag", e.toString());
- }
大功告成,接下来看看 log
没有问题!那么教学可以结束了!
注意:
Jsoup.connect(String url) 方法不能运行在主线程,否则会报 NetworkOnMainThreadException
最后上一张应用在项目的效果图:
有没有发现熟悉的椒麻鸡?很酷炫有木有!
小结
整堂课分几步:
1. 下载 jar 包并丢到 libs(或者在 gradle)
2. 找到心仪的网页
3. 用 Jsoup.connect() 获取网页的 document
4. 查看网页源码,对准你想要的地方,给他来一个 Element.select(String selector)
5. 用 Node.attr(String key) 或者 Element.text() 方法把数据抽出来
6. 没有 6 了就是这么简单!
来源: http://www.phperz.com/article/17/0703/336612.html