1 Star 0 Fork 22

free/exCrawler

forked from sixliu/crawler 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0
1:clone exCrawler项目
2:进入exCrawler目录下 命令行 mvn eclipse:eclipse
3:将exCrawler/oklib下的jar替换到本地Maven库对应的jar包
4:打开eclipse,导入exCrawler为可执行的Maven项目.
5:StartMain 是整个项目的启动类
6:SchedulerManager    实现了任务的调度
7:AbstractCrawlWorker 是整个爬虫工作流程类,采用模板设计模式
8:AbstractWorker      是整个worker流程类(跟业务没关系),采用模板设计模式
9:mysql初始化脚本                 在src/main/script 下


整个系统分层:
      后台管理api层
      后台管理服务层
      任务调度层
      节点基础层
      数据存储层 
             
执行任务流程:  
    人为触发任务------
                      -->主节点执行任务,在缓存中初始化任务执行信息--->主节点计算出执行任务的节点List---->call工作节点执行任务--->
    定时触发任务------
      
      
   ---->工作节点接收到主节点执行任务的信号--->工作节点创建worker--->工作节点运行worker--->通知主节点worker运行--->
    
   ---->主节点接收到工作节点worker运行信息,并登记运行信息--->
    
                          --->工作空间处理数据为空--->任务完成
   ---->worker运行--->停止                                    ----工作节点worker通知主节点,worker运行结束--->   
                          --->手动停止--------------->任务停止   
                                                                     
   ---->主节点接收到工作节点worker运行结束信号--->检查任务的全部worker是否结束--->没有全部结束,不做任何处理 
                                                               
   ---->全部结束,统计各worker的运行信息,并生成运行任务运行记录入库,删除缓存中任务运行记录--->
   
   ---->如果任务是完成结束的话,那么检查检查任务是否有下一个执行任务
   
爬虫采集流程:
          初始化种子链接到工作空间(工作空间由同一个任务下的所有worker共享)--->从工作空间读取处理数据--->没有读取到数据时爬虫任务视为finished
    
         读取到处理数据--->下载前数据处理--->下载器处理数据--->下载后处理(接口可实现验证码识别和用户登录)
    
    --->解析数据(支持普通的cssQuery抽取,表格单挑数据抽取,表格多条数据抽取,json抽取,正则抽取)--->解析后处理
    
    --->存储(支持db保存,http发送,文件保存,其他存储等方式)
    

系统默认输出字段:
	采集数据id(此id跟业务无关):执行任务的workerName+当前worker计数
	采集数据的日期
	采集数据的数据源url
 
 监控概述:
	1.对于目标网站健康度监控
	2.对于目标网站版本监控
	3.对于自身节点健康度监控
	4.对于任务每次执行情况监控
	5.对于代理ip健康度监控

内容可能含有违规信息

简介

(因个人精力有限,基本功能已具备,其他操作功能还待继续完善) 整个分布式基于springboot,zookeeper,redis,netty,mysql等基础开源框架实现。 1.springboot作为整个项目的管理容器, 2.zookeeper作为整个集群几点注册和发现, 3.redis用来作为集群缓存和工作空间实现, 由于redis支持rpush lpop队列操作,然后lpop,rpush 操作数据key,hset,hget操作实际存储数据来实现redis队列ack,数据实际处理完后再hdell数据 4.netty用来作为节点间通信, 5.mysql用存储持久化数据. 项目仅仅为一个可执行jar. 下载器:支持okhttp,phantomjs,chrome... 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/chinawang/spider.git
git@gitee.com:chinawang/spider.git
chinawang
spider
exCrawler
master

搜索帮助