爬虫笔记(七)--分布式爬虫

分布式爬虫

分布

大需求的情况需要用到分布(千万,亿),分布指将大型任务中耗时的方面分配给多个进程或者终端(电脑)共同完成,比如scrapy的downloader和pipeline
问题:多个终端之间的通信,防止数据重复

scrapy分布式的可能性

  • 多个终端使用同一个scheduler—>替换为数据库
    mysql: 可以持久化,查询方便,但速度慢
    redis:基于内存,可以持久化,速度快,查询不易,贵
    request的调度不需要查询
  • pipeline使用快的数据库

scrapy-redis

配置

在settings中配置

REDIS_HOST = 'local.host' #调度器redis的IP地址
REDIS_PORT = 6379 #REDIS的端口号
from scrapy_redis.scheduler import Scheduler#从import找路径
SCHEDULER = "scrapy_redis.scheduler.Scheduler"#配置调度器为scrapy-redis
from scrapy_redis.dupefilter import RFPDupeFilter#从import找路径
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"#配置去重策略的类
#如果需要断点续传即持久化
SCHEDULER_PERSIST = True

ITEM_PIPELINES = {
   "scrapy_redis.pipelines.RedisPipeline": 300,
}#设置存储进redis数据库,但查询不易

然后在spider中配置

#spider中需要继承自scrapy_redis.RedisSpider
redis_key="  name:start_urls"#从redis中提取的url

同时需要在redis中输入:lpush 名字:start
_urls 请求的url

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值