twisted开发分布式任务调度爬虫

来源:互联网 发布:淘宝图片空间协议手机 编辑:程序博客网 时间:2024/06/03 16:51


满足需求:爬虫减少重复数据、相似数据。

                 数据检索效率要高


具体方案:

1:使用向量夹脚余弦来计算文本间的相似度,大于80%可认为数据相似度过高,不采集。

2:使用elasticsearch进行数据invert index。提高查询速度。支持分布式,可拓展。

3:使用gearman、或者twisted自己编写任务调度服务器。


twisted服务器控制器controler, 和爬虫节点 crawler_node

controler负责爬虫任务的存储,管理,分发

crawler_node爬虫节点


具体实施:

      elasticsearch,使用smartcn中文分词器,利用es的自身的排序结果,先过滤一遍最相似的数据文档,再使用向量夹脚余弦进行计算。

      twisted 控制器服务器,将有任务队列,任务添加入口,任务分配入口,使用post请求。并有数据存储入口。

     twisted crawler node,多线程爬虫。


使用到的python模块。pyes,twisted

定义队列

class CrawlerTaskBuffer:    def __init__(self, max_queue_size) :        self.tasks=[]        self.max_queue_size=max_queue_size    def isFull(self) :        size=0        size=len(self.tasks)        return size>=self.max_queue_size    def isEmpty(self) :        return len(self.tasks)==0    def getTask(self) :        if len(self.tasks)==0:            task=None        else :            task=self.tasks.pop()        return task    def addTask(self, task) :        ret=True        self.tasks.append(task)        return ret    def pushbackTask(self, task) :        ret=True        self.tasks.insert(0,task)        return ret


controler 控制服务器


0 0
原创粉丝点击