分布式爬蟲 - scrapy-redis 分布式系統?
問題描述
現在可以從網上下載這些代碼,怎么進行部署和運行代碼從github上下載了關于分布式的代碼,不知道怎么用,求各位大神指點下。。。下面是網址https://github.com/rolando/scrapy-redis環境已經按照上面的配置好了,但不知道如何實現分布式。分布式我是這樣理解的,有一個redis服務器,從一個網頁上獲取url種子,并將url種子放到redis服務器了,然后將這些url種子分配給其他機器。中間存在調度方面的問題,以及服務器和機器間的通信。
謝謝。。。
問題解答
回答1:感覺這個不是一兩句話可以描述清楚 的。
我之前參考的這篇博文,希望對你有幫助。
說說我個人的理解吧。
scrapy使用改良之后的python自帶的collection.deque來存放待爬取的request,該怎么讓兩個以上的Spider共用這個deque呢?
待爬隊列都不能共享,分布式就是無稽之談。scrapy-redis提供了一個解決方法,把collection.deque換成redis數據庫,多個爬蟲從同一個redis服務器存放要爬取的request,這樣就能讓多個spider去同一個數據庫里讀取,這樣分布式的主要問題就解決了.
注意:并不是換了redis來存放request,scrapy就能直接分布式了!
scrapy中跟待爬隊列直接相關的就是調度器Scheduler。
參考scrapy的結構
它負責對新的request進行入列操作,取出下一個要爬取的request等操作。所以,換了redis之后,其他組件都要改動。
所以,我個人的理解就是,在多個機器上部署相同的爬蟲,分布式部署redis,參考地址我的博客,比較簡單。而這些工作,包括url去重,就是已經寫好的scrapy-redis框架的功能。
參考地址在這里,你可以去下載example看看具體的實現。我最近也在搞這個scrapy-redis,等我部署好了在更新的這個答案。
你有新的進展可以分享出來交流。
回答2:@韋軒 您好,我看這段評論在15.10.11,請問您現在是否有結果了?能否推薦一些您的博客,謝謝您~可以聯系我chenjian158978@gmail.com
相關文章:
1. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現存在即更新應該使用哪個標簽?2. mysql - 數據庫建字段,默認值空和empty string有什么區別 1103. mysql - 這種分級一對多,且分級不平衡的模型該怎么設計表?4. Navicat for mysql 中以json格式儲存的數據存在大量反斜杠,如何去除?5. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf6. java - 數據庫查詢多表7. 新人求教MySQL關于判斷后拼接條件進行查詢的sql語句8. mysql - 千萬數據 分頁,當偏移量 原來越大時,怎么優化速度9. MySQL FOREIGN KEY 約束報錯10. mysql - 數據庫表中,兩個表互為外鍵參考如何解決
