天天看點

scrapy-redis的搭建 分布式爬蟲 去重

master:

一、spider檔案

1.需要更改繼承的類

from scrapy_redis.spiders import RedisSpider

2.注釋掉start_urls

3.在爬蟲目錄下新建立一個redis_urls.py檔案,放所有的URL到redis資料庫的清單中

4.回到爬蟲檔案中,寫一個redis_key = '清單的key'

二.settings.py檔案

三.如果要解決scrapy-redis空跑問題

1.在項目目錄下,建立一個extensions.py檔案,寫如下代碼:

2.打開settings.py檔案中EXTENSIONS的注釋,将Telent的注釋掉,換上:

'項目名.extensions.RedisSpiderSmartIdleClosedExensions': 500,

3.配置settings.py檔案:

# 開啟擴充

MYEXT_ENABLED = True

# 每5秒就檢測一次,檢測10次(50秒),如果url還為空,那麼就結束爬蟲程式

IDLE_NUMBER = 10

slave配置:

前面都一樣

需要删除redis_urls檔案

settings.py的配置:

如果存到master的MongoDB資料庫,需要将host改成master的ip,資料庫改成master的,集合也改成master的

master端和slave端的代碼保持一緻(改完master端代碼後複制一份當成salve端的代碼),slave端需要更改以下:

1. redis_urls.py删掉

2. MongoDB資料庫的主機号改為master端的

注意:scrapy-redis存在空跑問題

開始連接配接:

嘗試連接配接mongo:mongo --host masterIP --port 27017

嘗試連接配接master的redis資料庫:redis-cli -h masterIP

master的redis資料庫配置檔案需要做如下更改:

1.将bind 127.0.0.1 注釋掉

2.将protected-mode yes 改為 protected-mode no