分布式爬虫
原来的scrapy中的Scheduler维护的是当前机器中的任务队列(存放着Request对象以及回调函数等信息) + 当前的去重队列(存放访问过的url地址) 实现分布式的关键就是需要找一台专门的主机在上面运行一个共享的队列,比如redis。然后重写scrapy的Scheduler,让新的Scheduler到共享的队列中存取Request,并且去除重复的Request请求 1、共享队列 2、重写Scheduler,让它不论是去重还是执行任务都去访问共享队列中的内容 3、为Scheduler专门定制去重规则(利用redis的集合类型) # 在scrapy中使用redis的共享去重队列 # 1、在settings中配置redis链接 REDIS_HOST='localhost' # 主机名称 REDIS_PORT='6379' # 端口号 REDIS_URL='redis://user:pass@hostname:9001' # 连接url,优先于上面的配置 REDIS_PARAMS={} # redis连接参数 REDIS_PARAMS['redis_cls'] = 'myproject.RedisClient' # 指定连接redis的python模块 REDIS_ENCODING = 'utf-8' # redis的编码类型 # 2、让scrapy使用共享的去重队列