| 歡迎留言討論! 爬蟲開源項目地址:http://git.oschina.net/coliza/MongooCrawler 既然是構建分布式爬蟲架構,分布式說明爬蟲能在多臺機器同時運行,所以一定是多客戶端的,客戶端主要用于下載網(wǎng)頁,內(nèi)容會放入隊列,多客戶端就有可能運行在不同的操作系統(tǒng)不同的語言環(huán)境,所以我們讓它暫時支持java和scala兩種依賴jvm的語言,不用區(qū)分平臺。提到客戶端也一定意味著有服務端的存在,服務端主要用于解析網(wǎng)頁,提取url,輸出內(nèi)容到相應的存儲器,服務端和客戶端使用netty進行通訊,這是C/S模式。還有一種cluster模式,將爬蟲部署到集群機器上,之間相互通訊協(xié)調(diào),完成下載、分析、存儲等功能,這種模式下性能和擴展性都能得到提升。那么問題來了,我們怎么?;钅??很顯然是用心跳管理能完成這個功能。那么我們怎么保證可靠性呢?很顯然是用tcp通訊協(xié)議。那么怎么設計spider的客戶端呢?首先明確客戶端的功能邊界,客戶端首先必須接受服務端的指令,服務端讓爬哪些url就爬哪些url,所以url由服務端統(tǒng)一管理,服務端會從url隊列(以域名區(qū)分維護不同的url隊列)中取出url并封裝后傳輸給客戶端,客戶端接受到對象和會插入到隊列中,然后客戶端從隊列中取出url爬取網(wǎng)頁并解析(相當于scrapy中downloader和spider的功能集合),解析出的信息封裝到對象中傳給服務端,服務端接收到這個對象后會傳入storechannel(可能是hadoop-h(huán)dfs,hbase,elasticsearch)。傳過來的url會經(jīng)過驗證和去重后存儲到內(nèi)存數(shù)據(jù)庫中,并將url根據(jù)host塞入隊列。 爬蟲的關鍵技術: 1、抓取效率 2、鏈接分析(死鏈、去重) 3、結構化和非結構化數(shù)據(jù)提取、正文提取 4、垃圾網(wǎng)頁過濾(大量的網(wǎng)頁) 5、質(zhì)量識別 6、分類 7、反爬蟲 技術架構設計的初稿是這樣的:(待修改) 
 | 
|  | 
來自: WindySky > 《開發(fā)一款開源爬蟲框架系列》