scrapy_redis 要實作分布式爬蟲,需要分析項目中的spiders檔案夾中的爬蟲檔案
#----1 導入分布式爬蟲類
from scrapy_redis.spiders import RedisSpider
#----2 繼承分布式爬蟲類
class BookSpider(RedisSpider):
#----3 登出start_urls,增加了一個redis-key,沒有start_urls,因為分布式中,如果每台電腦都請求一次start_url就會重複
redis_key = 'start_url在redis中對應的鍵'
#----4 多了__init__方法,該方法不是必須的,可以手動指定allow_domains
#----4.1 登出allowed_domains
# # 修改允許的域xxx
# allowed_domains = ['xxx.com']
# # 修改起始的url
# start_urls = ['https://xxx.com']
#----4.2 配置__init__方法
def __init__(self, *args, **kwargs):
# Dynamically define the allowed domains list.
domain = kwargs.pop('domain', '')
self.allowed_domains = list(filter(None, domain.split(',')))
super(定義的爬蟲類名, self).__init__(*args, **kwargs)
#----5 啟動方法
#----5.1 在每個節點正确的目錄下執行爬蟲檔案,使該節點的scrapy_redis爬蟲程式就位
scrapy crawl 爬蟲名
#----5.2 在redis中給redis_key添加起始url,使全部節點真正的開始運作
lpush redis_key 'start_url'
#----0 在settings.p中添加斷點續爬的配置,實作真正的分布式爬蟲
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
SCHEDULER_PERSIST = True
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 400,
}
REDIS_URL = "redis://127.0.0.1:6379"