twisted開發分佈式任務調度爬蟲


滿足需求:爬蟲減少重複數據、相似數據。

                 數據檢索效率要高


具體方案:

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 控制服務器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章