垂直型爬虫架构设计(3)

    之前的几篇博文已经大概的说了一些垂直型爬虫的功能,现在简单的介绍一下我所用的爬虫总体框架的设计,涵盖整个爬虫的各个节点.

    我所用的爬虫主要分为两个部分,也就是两个节点.    主节点与爬虫节点.

    主节点负责所有的爬虫任务调度工作,包括爬虫任务的分发,爬虫任务的重试等.同时也用于分配抓取任务,对于抓取任务做简单的规划整理等.

     也许比较难以理解,其实也就相当于抓取任务的大管家,这个是我当时学SEO的时候想到的东西,百度爬虫收录网站的时候是有规律的.很多SEOer都会在每天固定的时间开始更新网站的内容,新增博文,而且由于我是一个失败的SEOer也就很奇怪,为什么百度爬虫天天跑新浪去,怎么就不来我的网站踩踩呢.我也更新了呀.有的时候我更新了好几天才被爬虫收录.也就那时知道了什么叫网站权重.google的PR权重等.从而设计了主节点.

    主节点功能有时候很少,简单来说就是根据网站的权重来分配抓取任务.但是有时候也会很多:会基于爬虫抓取状态来判断这个抓取任务的成败.对于这些集中进行处理.如: 抓取失败,网站权重较高,是由于那个爬虫节点的外网链接问题,那么就把该抓取任务分配到另外的抓取上,从而实现.再次抓取.

    主节点会长时间维护一个抓取队列.基于爬虫的反馈与自身的整理来新增与删减抓取队列的任务.主节点会基于队列来推给爬虫集群抓取的任务..


    爬虫节点是最简单的封装请求,抓取数据,重试,记录日志.与解析等工作.    爬虫会根据主节点发来的抓取任务来封装成一个request,然后直接进入下载,下载完成解析页面,并且存储,页面解析的同时会查找下次要抓取的链接,加入到待抓取队列中.继续下载,直到无法获取到待抓取链接,无法发现新的链接.这时需要把抓取的结果发送给主节点,以便主节点对于抓取结果进行维护.一般节点间的数据交互比较简单,可以简单的返回成功条数,错误条数(404,5XX),抓取时间等.

        爬虫抓取任务完成后,会再次想主节点请求获取新的抓取任务.再次开启抓取.完成以上步骤...        


    下面是简单的流程图.

    垂直型爬虫架构设计(3)

转载于:https://my.oschina.net/CainGao/blog/616659