有时候我们见一个很实用的网站,但是网站没有提供app,我们又不喜欢浏览网站,有没有办法在没有提供api的情况下将网站整合成app呢,现在告诉你可以的。
这里用到jsoup.jar ,jsoup 是一款java 的html解析器,可直接解析某个url地址、html文本内容。它提供了一套非常省力的api,可通过dom,css以及类似于jquery的操作方法来取出和操作数据。
在开发app之前我们需要先了解目标网站的html源码,查看我们需要提取的数据的结构,
下面我们以freebuf为例,freebuf html源码标注很清晰,便于我们查阅,如图,这是头部导航栏的源码位置,我们开发app过程中会从这里提取头部导航栏内容
分类阅读
这里抓取的是文章列表
网站数据结构已经抓取到了,现在我问开始从抓取的数据中提取我们需要的内容
首先我们要抓取文章列表,这里我们用的是jsoup 选择器,它的作用就是从目标中选择我们需要的内容,下面举例如何提取数据
string html=getjsonstring(connection.getinputstream());获取html源码,保存在字符串中
document doc= jsoup.parse(html); elements pcontent=doc.select(p[class=rgg-imagegrid gallery]);
抓取class为rgg-imagegrid gallery的p内容 elements imgurls=pcontent.select(img);
抓取所有img链接
其实用到的语法就这些,我们把语法了解了会很简单的
比如我们要选择文章列表可以
elements particlelist=doc.select(p[class=item active])
选择列表文章展示图
elements articleing=particlelist.select[img]
按照气上面操作,我们可以将文章列表,文章内容,作者,发布时间,等内容全部提取,然后我们自己排版实现将网站数据封装入app