我们自主开发的CalcStayNight分布式计算平台
使用新型网络架构
用Python编写,可以在windows,linux,mac上运行.
TCP消息通信,只需要主从机之间网络互通,不需要做预先打通无密码ssh隧道等网络配置.
从机单可执行文件部署,部署非常方便.
利用约定好输入输出格式的可执行文件或脚本作为Map或Reduce程序,从而可以使用多种语言编写.
从机当机不影响任务进行,主机则使用快照机制进行故障恢复.
基础的列表式爬虫,用于爬取给定的url中的数据。
爬虫会沿着网页中的超链接持续抓取.
爬虫支持使用cookies以抓取需要登录才可获得的内容.
爬虫支持在网络上自动寻找可用的免费Http代理(另一模块),并使用这些代理进行抓取.
爬虫支持在简单配置之后解析并抓取复杂的ajax页面.
抓取微信、即刻、今日头条等手机App中的内容.
部署方便,只需要在主机上执行程序和在从机上执行程序即可。 可以配置在windows或linux系统上,爬虫机之间只需要网络和主机保持连通,不需要在同一局域网。
可以调度各种语言生成的可执行小爬虫程序,只需要输入输出满足设计要求即可。开发者可以自由地开发扩展程序。
使用一个模块进行收集数据,该模块只需要简单的开发工作以适配各种需求。 现在已有制作好的普通文件收集模块、写入HDFS、写入HBase、写入MYSQL等收集模块可选用。
包含丰富的预定义的任务,如对于指定URL列表进行抓取、抓取全站、抓取微博用户信息、微博搜索等。 甚至包括一些特殊的任务,如自动更换代理进行抓取等。
从机的当机不影响任务的完成,只需要重新在从机上启动即可使其继续工作。而主机拥有自动存档机制,可以在故障后通过读档使系统继续正常运行。
支持定义任务优先级,即可以立刻分配一个高优先级的任务以促使系统优先对其进行处理。
包含两部分针对防屏蔽的措施:系统上,系统支持爬虫机对指定网站域名的等待机制,在发现屏蔽后会启动等待而不会无休止地尝试以导致更严重的屏蔽;在爬虫程序包上,有预配置的程序包可以实现自动检测被屏蔽
通常有严格的集群要求,需要在同一局域网网段内,为相同的linux系统,并且ssh互通。
通常对扩展程序有严格的语言要求,类要求。如必须使用java语言且必须重载一个指定类。 一旦需要利用一些其他语言的解析器,实现非常困难。
通常与HDFS等分布式文件系统紧密集成,数据直接写到分布式文件系统上。
通常少,需要对特殊任务进行开发。
只有部分系统有完善的故障恢复机制,而且故障后的重新启动过程通常需要经验丰富的维护人员进行。
只有部分系统支持任务优先级,任务插队等。
通常只用于友好的爬取等,没有完善的防屏蔽策略和措施。不支持恶意抓取。