android 数据采集框架,AndroidCrawler: Android上的一款采集框架, 采用Retrofit + OkHttp + Rxjava + Eventbus + Greendao +...
Android Crawler 采集新闻框架Android Crawler, 一款采集软件, 采用Retrofit + OkHttp + Rxjava + Eventbus + Greendao + Jsoup + Meterial Design, 参考webmagic爬虫框架并用rxjava制作了自定义的采集框架。采集网站Thanks to the open source project 使..
Android Crawler 采集新闻框架
Android Crawler, 一款采集软件, 采用Retrofit + OkHttp + Rxjava + Eventbus + Greendao + Jsoup + Meterial Design, 参考webmagic爬虫框架并用rxjava制作了自定义的采集框架。
采集网站
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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)