scrapy_redis分佈式

想做一下高大上的scrapy_redis爬蟲程序,又覺得我這種水貨做不來,後來各種查教程,試驗,還算做出來一個像分佈式的東西,不過還是記錄一下,反正開幾個終端模擬分佈式,數據庫裏的數據確實沒重複的,也能湊乎着用吧

首先搭建scrapy,額。。反正就是先別管啥分佈式,做一個scrapy爬蟲出來再說。
當你的scrapy爬蟲能運行成功,數據庫裏能有數據的時候,改成分佈式,
settings.py文件最後加這麼一段話:

DUPEFILTER_CLASS="scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER="scrapy_redis.scheduler.Scheduler"
#默認爲False,會在爬取完成後清空爬取隊列和去重指紋集合。如果不想清空它們,就設置爲True:
SCHEDULER_PERSIST=True
REDIS_URL="redis://127.0.0.1:6379"

#  同時爲保證能夠把數據同時存儲到sql中我們還要設置相關pipline
ITEM_PIPELINES={
	#這個是你之前的scrapy爬蟲管道的設置,從上面移下來就好了,注意權重優先級要低於redis管道
    'test_scarpy_redis.pipelines.TestScarpyRedisPipeline':500,
    #這個是redis數據庫的管道設置,pipline.py文件裏不用寫redis數據庫操作,人家封裝好了,我們把管道接上就行了。當然,你想存sql或者mongo的話,pipline.py裏面要寫sql或者mongo的數據庫操作
    'scrapy_redis.pipelines.RedisPipeline':400
}

這段設置代碼加完之後再運行你的爬蟲,你的sql(mongo)和redis庫裏就有數據了,把它部署到不同的電腦上運行,就是分佈式了。同一臺電腦開多個終端運行也算模擬分佈式了,可以用來試驗。
redis庫中會出現三個字段:
在這裏插入圖片描述
藍框裏面的就是數據了,其他兩個好像是dupefilter是用來存儲抓取過的url的指紋,是防止重複抓取的,requests裏是存的待爬url.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章