分布式爬蟲系統
一、架構
二、原理
1.分布式原理:
利用scrapy-redis實現分布式,利用主從模式,把自己核心服務器稱為master,用於跑爬蟲程序的機器稱為slave。我們知道,采用scrapy框架抓取網頁,需要首先給定一些start_urls,爬蟲首先訪問start_urls里面的url,再根據具體邏輯對里面的元素、或者其他二級、三級頁面進行抓取。而要實現分布式,需要在start_urls里面做文章。
在master上搭建一個redis數據庫(這個數據庫只用於url的存儲,不用於存儲數據),並對每一個需要爬取的網站類型,都開辟一個單獨的列表字段。通過設置slave上scrapy-redis獲取url的地址為master地址。這樣的設置就是,盡管有多個slave,然而獲取url的地方只有一個,那就是服務器master上的redis數據庫。
並且,由於scarpy-redis自身的隊列機制,slave獲取鏈接不會相互沖突。這樣各個slave在完成抓取任務之后,再把獲取的結構匯總到服務器上(這時獲取的數據不在是redis,而是mongodb、mysql)