使用scrapy-redis實現分布式爬蟲

一、準備工作

用來實現分布式爬蟲的項目是:爬取知乎用戶信息項目
注冊了兩個服務器:阿里云服務器和騰訊云服務器,使用的系統都是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數據庫出現的報錯

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容