使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter

使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter

Github下载链接:https://github.com/liyaopinner/BloomFilter_imooc
精简版百度云盘链接: https://pan.baidu.com/s/11a_K_6WTifeHTG8lIY5ckQ 提取码: kq73

  1. 安装mmh3库
    a>使用布隆去重之前需要安装mmh3库,这里我们直接下载已经编译过的mmh3文件
    百度云盘下载链接: https://pan.baidu.com/s/1-MxZkQHd7J4g_nctHPe_Xg 提取码: y6q5
    下载完成之后,解压文件,将这个两个文件复制到现在使用的python环境中
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
    b>例如我现在用的是虚拟环境,放置之后python虚拟环境就相当于安装了该包
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
  2. Bloom文件
    a>如果是在github上下载,需要对源代码进行修改,如果是在百度云盘上下载,因为百度云盘上的代码我已经修改过了,所以直接可以跳到c>步骤
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
    b>复制这两行代码,添加if name == ‘main’,并对__init__函数进行修改
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
    c>将修改后的这个py文件放到scrapy_redis文件夹下
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
  3. 修改scrapy_redis中的dupefilter.py
    a>打开scrapy_redis中的dupefilter.py文件,首先导入刚刚修改的布隆去重的包
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
    b>在初始化函数中初始化PyBloomFilter()对象
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
    c>最后找到def request_seen(self, request):这个方法,重写这个方法
    使用布隆去重代替scrapy_redis(分布式爬虫)自带的dupefilter
  4. 到此为止咱们已经将scrapy_redis自带的去重替换成了布隆去重了