爬蟲 - scrapy-redis分布式爬蟲
阿新 • • 發佈:2018-07-04
等待 install blank lec name odi requests scrapy timeout
簡介
Scrapy-Redis則是一個基於Redis的Scrapy分布式組件。它利用Redis對用於爬取的請求(Requests)進行存儲和調度(Schedule),
並對爬取產生的項目(items)存儲以供後續處理使用。scrapy-redi重寫了scrapy一些比較關鍵的代碼,
將scrapy變成一個可以在多個主機上同時運行的分布式爬蟲。
參考Scrapy-Redis官方github地址
安裝
1 pip3 install scrapy-redis
配置
連接redis
1 REDIS_HOST = ‘250.100.250.250‘ # 主機名 2 REDIS_PORT = 9999# 端口 3 REDIS_PARAMS = {‘password‘:‘xxx‘} # Redis連接參數 默認:REDIS_PARAMS = {‘socket_timeout‘: 30,‘socket_connect_timeout‘: 30,‘retry_on_timeout‘: True,‘encoding‘: REDIS_ENCODING,}) 4 REDIS_ENCODING = "utf-8" # redis編碼類型 默認:‘utf-8‘
或者:
1REDIS_URL = ‘redis://user:pass@hostname:9001‘ # 連接URL(優先於以上配置)
去重
1 DUPEFILTER_KEY = ‘dupefilter:%(timestamp)s‘ 2 DUPEFILTER_CLASS = ‘scrapy_redis.dupefilter.RFPDupeFilter‘
調度器配置
1 SCHEDULER = "scrapy_redis.scheduler.Scheduler" 2 3 DEPTH_PRIORITY = 1 # 廣度優先 4 # DEPTH_PRIORITY = -1# 深度優先 5 SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.PriorityQueue‘ # 默認使用優先級隊列(默認),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表) 6 7 # 廣度優先 8 # SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.FifoQueue‘ # 默認使用優先級隊列(默認),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表) 9 # 深度優先 10 # SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.LifoQueue‘ # 默認使用優先級隊列(默認),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表) 11 SCHEDULER_QUEUE_KEY = ‘%(spider)s:requests‘ # 調度器中請求存放在redis中的key 12 13 SCHEDULER_SERIALIZER = "scrapy_redis.picklecompat" # 對保存到redis中的數據進行序列化,默認使用pickle 14 15 SCHEDULER_PERSIST = False # 是否在關閉時候保留原來的調度器和去重記錄,True=保留,False=清空 16 SCHEDULER_FLUSH_ON_START = True # 是否在開始之前清空 調度器和去重記錄,True=清空,False=不清空 17 # SCHEDULER_IDLE_BEFORE_CLOSE = 10 # 去調度器中獲取數據時,如果為空,最多等待時間(最後沒數據,未獲取到)。 18 19 20 SCHEDULER_DUPEFILTER_KEY = ‘%(spider)s:dupefilter‘ # 去重規則,在redis中保存時對應的key 21 22 # 優先使用DUPEFILTER_CLASS,如果麽有就是用SCHEDULER_DUPEFILTER_CLASS 23 SCHEDULER_DUPEFILTER_CLASS = ‘scrapy_redis.dupefilter.RFPDupeFilter‘ # 去重規則對應處理的類
爬蟲 - scrapy-redis分布式爬蟲