使用方式:
pip3 install scrapy-redis-bloomfilter
使用的方法和Scrapy-Redis基本相似,在這里說明幾個關鍵配置。
# 1. 替換原來的請求調度器的實現類,使用 scrapy-redis 中請求調度器
SCHEDULER = "scrapy_redis_bloomfilter.scheduler.Scheduler"
# 2. 設置去重類,實現去重的代碼規則,會生成 去重指紋 存在 redis 中
# 去重類,要使用Bloom Filter請替換DUPEFILTER_CLASS
DUPEFILTER_CLASS = "scrapy_redis_bloomfilter.dupefilter.RFPDupeFilter"
# 3. 開啟增量式
SCHEDULER_PERSIST = True
# 4. 配置redis
REDIS_HOST = "127.0.0.1" #
REDIS_PORT = 6379
REDIS_PARAMS = {
'db': 13
}
# 散列函數的個數,默認為6,可以自行修改
BLOOMFILTER_HASH_NUMBER = 6
# Bloom Filter的bit參數,默認30,占用128MB空間,去重量級1億
BLOOMFILTER_BIT = 30
DUPEFILTER_CLASS是去重類,如果要使用Bloom Filter,則DUPEFILTER_CLASS需要修改為該包的去重類。
BLOOMFILTER_HASH_NUMBER是Bloom Filter使用的散列函數的個數,默認為6,可以根據去重量級自行修改。
BLOOMFILTER_BIT即前文所介紹的BloomFilter類的bit參數,它決定了位數組的位數。如果BLOOMFILTER_BIT為30,那么位數組位數為2的30次方,這將占用Redis 128 MB的存儲空間,去重量級在1億左右,即對應爬取量級1億左右。如果爬取量級在10億、20億甚至100億,請務必將此參數對應調高
一定要注意參數!!(爬取數據量級別對應一下 )
項目地址代碼:
https://github.com/Python3WebSpider/ScrapyRedisBloomFilter
學習地址:
崔慶才大神的騰訊雲+社區: