爬虫
1. 流程
1) Scheduler启动爬虫器,TaskMaster初始化taskQueue
2) Workers从TaskQueue中获取任务
3) Worker线程调用Fetcher爬取Task中描述的网页
4) Worker线程将爬取到的网页交给Parser解析
5) Parser解析出来的数据送交Handler处理,抽取网页Link和处理网页内容
6) VisitedTableManager判断从URLExtractor抽取出来的链接是否已经被爬取过,如果没有提交到TaskQueue中
2. Scheduler
Scheduler负责启动爬虫器,调用TaskMaster初始化TaskQueue,同时创建一个monitor线程,负责控制程序的退出。
何时退出?
当TaskQueue为空,并且Workers中的所有线程都处于空闲状态。而这种形势在指定10分钟内没有发生任何变化。就认为所有网页已经全部爬完。程序退出。
3. Task Master
任务管理器,负责管理任务队列。任务管理器抽象了任务队列的实现。
l 在简单应用中,我们可以使用内存的任务管理器
l 在分布式平台,有多个爬虫机器的情况下我们需要集中的任务队列
在现阶段,我们用SQLLite作为任务队列的实现。可供替代的还有Redis。
任务管理器的处理流程:
l 任务管理器初始化任务队列,任务队列的初始化根据不同的配置可能不同。增量式的情况下,根据指定的URL L