分布式增量爬虫系统开发
概述
对cnblogs、csdn、51cto、jianshu等博客网站进行全站文章采集、(增量更新)动态更新采集,数据持久化;比如可以基于博客作者的文章列表进行监控,如果有新文章更新就采集新文章,不重复采集;
要求以框架的方式去开发、代码耦合性高、代码简洁、命名规则统一、代码注释;
技术要求
语言:python
数据库:mysql、mongodb、redis
操作系统:Linux(centos6.x)
框架:可以基于python的scrapy或pyspider等原生爬虫框架进行开发
详细需求
数据库需求
数据库选择
优先使用mysql,如果有需要可以使用mongodb
字段要求
文章大分类(比如 php、散文)
博客平台
博客作者
博客作者简介
博客作者首页
博客作者title、keyword、description
博客作者文章分类
文章标题
文章描述
文章内容
文章图片
文章分类
文章tag标签
文章发布时间
文章采集时间
文章更新时间
以上如果某些字段不存在留空
表设计要求
根据开发需求自行设计表、外键等符合相应范式要求,符合大数据要求
文章分类和tag标签使用无极分类
提供数据库字典
系统要求
采集博客站点
csdn :http://blog.csdn.net/
cnblogs :https://www.cnblogs.com/
iteye :http://www.iteye.com/
开源中国 :http://www.oschina.net/
简书 :http://www.jianshu.com/
51cto :http://www.51cto.com/
红黑联盟:https://www.2cto.com/
伯乐在线 :http://blog.jobbole.com/
目前先先采集以上站点的文章 以博客为主;
反爬要求
代理ip
可以导入代理ip列表,可以验证代理ip可用性
user-agent
随机更换user-agent
其他反爬要求考虑
运行环境
运行在多台centos 6.x 环境下
分布式
参考scrapy-redis 的分布式方式 或者有更好的模式 可以探讨一下
增量更新
如果有文章更新进行采集不重复采集以采集过的文章
拓展性要求
系统可拓展行强,比如新加一个采集网站,
其他重要要求
系统可以暂停、重启、停止等功能
对网络不好、系统出错、服务器拒绝等进行处理 防止重复采集