一、準備工作
用來實現分布式爬蟲的項目是:爬取知乎用戶信息項目
注冊了兩個服務器:阿里云服務器和騰訊云服務器,使用的系統都是windows系統
二、scrapy-redis組件的使用
將知乎用戶項目下載至本地,并使用git命令新建分支以方便對項目進行更改而不影響之前的項目:
git checkout -b distributed #新建分支
git branch #切換分支
在項目settings.py中加入:
SCHEDULER = "scrapy_redis.schedler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
REDIS_URL = 'redis://120.xx.xx.xx:password@120.xx.xx.xx:6379' #我用的是阿里云服務器,此處包括服務器的用戶名、密碼、服務器公網IP、端口號
ITEM_PIPELINES = {
'zhihuuser.pipelines.MongoPipeline': 300,
# 'scrapy_redis.pipelines.RedisPipeline': 301,
}
將更改后的項目上傳至GitHub:
git add -A
git commit -m "add distributed"
git push origin distributed
三、在本機及騰訊云上進行協同爬取
在本機上可以直接使用命令運行項目:
scrapy crawl zhihu
在騰訊云服務器上需將在分支distributed上的項目克隆下來,然后再運行:
git clone http://github.com/xxx/xxx -b distributed
這樣子就可以讓本機及騰訊云服務器對知乎用戶項目進行協同爬取,各自爬取到的數據保存在各自的MongoDB數據庫--
本機MongoDB數據庫:
本機MongoDB.png
騰訊云MongoDB數據庫:
騰訊云MongoDB.png
阿里云redis數據庫:
阿里云redis數據庫.png
四、問題
在此過程中出現各種問題:
1、服務器無法進行遠程連接
2、數據庫無法進行遠程連接
3、redis、mongodb數據庫出現的報錯