Android Crawler 采集新闻框架

Android Crawler, 一款采集软件, 采用Retrofit + OkHttp + Rxjava + Eventbus + Greendao + Jsoup + Meterial Design, 参考webmagic爬虫框架并用rxjava制作了自定义的采集框架。

57f8742ddabaf5157051f7f16fdf2596.pnge00b8a01a03aed81fdccad158a4be324.pngf7d26d72a3b97333e2d937e794d50c95.png

采集网站

Thanks to the open source project 使用框架

feature

使用Android前台Service,提高优先权不被手机内存回收,后台采集

使用接口化的采集框架,可以扩展不同的采集规则

文档

以下可以根据实际情况修改

注意更改 gradle/wrapper/gradle-wrapper.properties 中

distributionUrl=file:///D:/android/gradle/gradle-2.14.1-all.zip

为自己的本地gradle路径

数据库设计

article表

public class Article {

private String title;

private String content;

private Date time;

//栏目

private String column;

@Id

private String url;

}

采用url作为主键,标识是否采集过了

采集框架

采集的思想是分schedule和processor。

schedule负责提供url,在本示例中是采集列表页,返回文章的url数组。所以实现schedule的时候,在schedule中可以定义栏目等采集信息,维护当前列表的页码,当spider要求更多的url时候,返回url数组,如果列表页没有下一页的时候可以主动停止spider。

processor解析html后,可以传递给pipeline做一些其它工作,比如保存到数据库等

│ ISpider.java

│ Spider.java

│ SpiderListener.java

├─pipeline

│ GreenDaoPipeline.java

│ IPipeline.java

├─processor

│ ContentProcessor.java

│ IContentProcessor.java

│ IUrlProcessor.java

│ ListProcessor.java

└─schedule

CommonSchedule.java

ISchedule.java

ISpider 采集统筹管理类

IContentProcessor,IUrlProcessor 解析html内容

ISchedule 负责提供url队列,没有url的时候可以主动停止当前spider

IPipeline 实现数据的持久化,写入数据库等。

详情请参考Spider实现类

未完待续。

提取栏目json字符串的js

访问网站,在开发者工具控制台输入以下,运行

function getList(){

var arr=[];

$('dl.menu').find('dd').each(function(){

var $this=$(this);

var text=$this.text();

var href=$this.find('a').attr('href');

var node={};

node.text=text;

node.href=href;

arr.push(node);

})

return JSON.stringify(arr);

}

getList();

如下:

[

{

"text": "政策文件",

"href": "/article/fwydyl/zcwj"

},

{

"text": "统计数据",

"href": "/article/fwydyl/tjsj"

},

{

"text": "相关资讯",

"href": "/article/fwydyl/zgzx"

},

...

]

license

基于GPL,可参考基础框架代码。

参考资料

Android Service

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐