android jsoup简书,Android用jsoup解析html

转自:http://www.jianshu.com/p/a620a2664f58

1.jsoup介绍

很多时候,我们需要从各种网页上面抓取数据,而jsoup是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

jsoup官方文档:

中文文档:

2.使用场景

在遇到部分 不完整的还html代码的时候,因为用Html.fromHtml()函数,从这个函数就可以知道这个是将一段html内容解析成TextView可以展示的内容,但是 想图片处理或者其他内容,并不能显示完整,于是可以 用jsoup进行html解析

3.下载jar包

4.这里我们我继续使用美食的网页,然后右键查看网页源码,或者按F12,接下来可以看到一大堆标签、

找到需要的,例如上图这个“美食天下”,可以看到“美食天下”是放在以

try {

//从一个URL加载一个Document对象。

Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();

//选择“美食天下”所在节点

Elements elements = doc.select("div.top-bar");

Log.i("mytag",elements.select("a").attr("title"));

}catch(Exception e) {

Log.i("mytag", e.toString());

}

接下来看一下打印出来的结果:

a0ff51600b18

Paste_Image.png

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):

下图红色框框是我们要获取的数据,可以看到他们对应的节点就是蓝色圆圈里面的

a0ff51600b18

Paste_Image.png

废话不多说上代码

try {

//还是一样先从一个URL加载一个Document对象。

Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();

//“椒麻鸡”和它对应的图片都在

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"));

//所需链接在

Elements url = doc.select("div.detail").select("a");

Log.i("mytag", "url:" + url.get(i).attr("href"));

//原料在

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

a0ff51600b18

Paste_Image.png

没有问题!那么教学可以结束了!

注意:

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()方法把数据抽出来

a0ff51600b18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值