爬蟲開源項(xiàng)目地址:http://git.oschina.net/coliza/MongooCrawler
以前的思路是由客戶端完成所有的下載網(wǎng)頁,解析等功能,服務(wù)器端負(fù)責(zé)從內(nèi)存隊(duì)列中拿到數(shù)據(jù)并將獲取的對象輸出到存儲層。現(xiàn)在發(fā)現(xiàn)一個(gè)很麻煩的問題,不同的網(wǎng)站需要定制不同的抓取策略,如果部署爬蟲集群,那么假如我
要修改解析策略或存儲策略,客戶端或者服務(wù)器只能重寫、編譯、部署,而且服務(wù)端負(fù)責(zé)存儲壓力大很容易造成性能瓶頸。
解決方法就是,客戶端一樣負(fù)責(zé)抓取和分析功能,不一樣的是這個(gè)定義解析策略的對象通過RPC調(diào)用服務(wù)端的接口獲取,這樣修改策略就不需要再動客戶端。客戶端同時(shí)負(fù)責(zé)調(diào)用數(shù)據(jù)層的接口存儲數(shù)據(jù),只不過負(fù)責(zé)存儲的對象同
樣通過RPC調(diào)用服務(wù)端的接口獲取。
近期一直在寫爬蟲,看了很多別人設(shè)計(jì)的爬蟲架構(gòu)后,我大概梳理了一下主要的功能模塊,其一是抓取主體,一般是多個(gè)內(nèi)存隊(duì)列存儲url,不同的爬蟲節(jié)點(diǎn)從隊(duì)列中獲取url進(jìn)行爬??;其二是公共庫,存儲一些抓取需要用的賬號和代理ip;其三是監(jiān)控報(bào)警;其四是抓取規(guī)則配置。