scrapy_redis对接布隆过滤器(Bloom Filter)

使用方式:

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

学习地址:

崔庆才大神的腾讯云+社区:

https://cloud.tencent.com/developer/article/1084962

原文地址:https://www.cnblogs.com/yunlongaimeng/p/12675449.html