- 論壇徽章:
- 0
|
------使用scrapy,redis, mongodb,graphite實現(xiàn)的一個分布式網(wǎng)絡爬蟲,底層存儲mongodb集群,分布式使用redis實現(xiàn), 爬蟲狀態(tài)顯示使用graphite實現(xiàn)。
這是項目的地址:https://github.com/gnemoug/distribute_crawler.git
------這個工程是我對垂直搜索引擎中分布式網(wǎng)絡爬蟲的探索實現(xiàn),它包含一個針對http://www.woaidu.org/ 網(wǎng)站的spider, 將其網(wǎng)站的書名,作者,書籍封面圖片,書籍概要,原始網(wǎng)址鏈接,書籍下載信息和書籍爬取到本地:
------分布式使用redis實現(xiàn),redis中存儲了工程的request,stats信息,能夠?qū)Ω鱾機器上的爬蟲實現(xiàn)集中管理,這樣可以 解決爬蟲的性能瓶頸,利用redis的高效和易于擴展能夠輕松實現(xiàn)高效率下載:當redis存儲或者訪問速度遇到瓶頸時,可以 通過增大redis集群數(shù)和爬蟲集群數(shù)量改善。
------底層存儲實現(xiàn)了兩種方式:
------------將書名,作者,書籍封面圖片文件系統(tǒng)路徑,書籍概要,原始網(wǎng)址鏈接,書籍下載信息,書籍文件系統(tǒng)路徑保存到mongodb 中,此時mongodb使用單個服務器,對圖片采用圖片的url的hash值作為文件名進行存儲,同時可以定制生成各種大小尺寸的縮略 圖,對文件動態(tài)獲得文件名,將其下載到本地,存儲方式和圖片類似,這樣在每次下載之前會檢查圖片和文件是否曾經(jīng)下載,對 已經(jīng)下載的不再下載;
------------將書名,作者,書籍封面圖片文件系統(tǒng)路徑,書籍概要,原始網(wǎng)址鏈接,書籍下載信息,書籍保存到mongodb中,此時mongodb 采用mongodb集群進行存儲,片鍵和索引的選擇請看代碼,文件采用mongodb的gridfs存儲,圖片仍然存儲在文件系統(tǒng)中,在每次下載 之前會檢查圖片和文件是否曾經(jīng)下載,對已經(jīng)下載的不再下載;
------避免爬蟲被禁的策略:
------------禁用cookie
------------實現(xiàn)了一個download middleware,不停的變user-aget
------------實現(xiàn)了一個可以訪問google cache中的數(shù)據(jù)的download middleware(默認禁用)
------調(diào)試策略的實現(xiàn):
------------將系統(tǒng)log信息寫到文件中
------------對重要的log信息(eg:drop item,success)采用彩色樣式終端打印
------文件,信息存儲:
------------實現(xiàn)了FilePipeline可以將指定擴展名的文件下載到本地
------------實現(xiàn)了MongodbWoaiduBookFile可以將文件以gridfs形式存儲在mongodb集群中
------------實現(xiàn)了SingleMongodbPipeline和ShardMongodbPipeline,用來將采集的信息分別以單服務器和集群方式保存到mongodb中
------訪問速度動態(tài)控制:
------------跟據(jù)網(wǎng)絡延遲,分析出scrapy服務器和網(wǎng)站的響應速度,動態(tài)改變網(wǎng)站下載延遲
------------配置最大并行requests個數(shù),每個域名最大并行請求個數(shù)和并行處理items個數(shù)
------爬蟲狀態(tài)查看:
------------將爬蟲stats信息(請求個數(shù),文件下載個數(shù),圖片下載個數(shù)等)保存到redis中
------------實現(xiàn)了一個針對分布式的stats collector,并將其結(jié)果用graphite以圖表形式動態(tài)實時顯示
------mongodb集群部署:在commands目錄下有init_sharding_mongodb.py文件,可以方便在本地部署
[圖片] 爬蟲運行狀態(tài)graphite實時顯示
scrapy_graphite_statscol.png (146.31 KB, 下載次數(shù): 124)
下載附件
2013-04-18 07:43 上傳
Screenshot-2013-04-17 16:32:51.png (50.66 KB, 下載次數(shù): 15)
下載附件
2013-04-18 07:44 上傳
[圖片] 爬蟲運行終端截圖
Screenshot-2013-04-17 16:09:24.png (130.99 KB, 下載次數(shù): 17)
下載附件
2013-04-18 07:44 上傳
Screenshot-2013-04-17 16:13:03.png (205.7 KB, 下載次數(shù): 17)
下載附件
2013-04-18 07:44 上傳
[圖片] 下載的圖片截圖
Screenshot-2013-04-17 22:15:56.png (237.35 KB, 下載次數(shù): 16)
下載附件
2013-04-18 07:45 上傳
[圖片] 下載的書籍文件截圖
Screenshot-2013-04-17 16:50:50.png (124.89 KB, 下載次數(shù): 13)
下載附件
2013-04-18 07:45 上傳
Screenshot-2013-04-17 16:52:03.png (6.62 KB, 下載次數(shù): 15)
下載附件
2013-04-18 07:45 上傳
[圖片] mongodb集群運行
Screenshot-2013-04-17 16:12:08.png (244.64 KB, 下載次數(shù): 20)
下載附件
2013-04-18 07:46 上傳
[圖片] 數(shù)據(jù)mongodb存儲
Screenshot-2013-04-17 22:22:33.png (246.38 KB, 下載次數(shù): 18)
下載附件
2013-04-18 07:46 上傳
[圖片] 文件mongodb集群存儲
Screenshot-2013-04-17 16:10:57.png (225.21 KB, 下載次數(shù): 18)
下載附件
2013-04-18 07:46 上傳
[圖片] 日志文件截圖
Screenshot-2013-04-17 16:56:47.png (308.76 KB, 下載次數(shù): 13)
下載附件
2013-04-18 07:47 上傳
|
|