Scrapy-redis分布式爬虫

运行流程

运行流程图
为什么使用redis数据库?reids数据库完成了什么功能?

  • redis数据库是基于内存的存储,读写的效率高。redis数据库有丰富的数据类型(string、hash、list、set、zset)
  • 实现了去重,实现了调度器的队列和数据的存储

实现分布式爬虫的流程和步骤

1、第一步需要设置settings中的配置

#设置去重组件,使用的是scrapy-redis的去重组件,而不再是scrapy框架自己的去重组件了
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

#设置调度器,使用的是scrapy-redis重写的调度器,不在使用scrapy自带调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

#可以实现断点爬取(请求的记录不会消失,会存储在redis数据库中,不会清楚redis的任务队列)
SCHEDULER_PERSIST = True

#设置调度器任务队列的模式
SCHEDULER_QUEUE是scrapy-redis默认使用的队列模式(有自己的优先级)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"

#使用了队列的模式,任务先进先出
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"

#采用了栈的形式,任务先进后出
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"

ITEM_PIPELINES = {
'example.pipelines.ExamplePipeline': 300,
#实现这个管道,可以将爬虫端获取的item数据,统一保存在redis数据库中
'scrapy_redis.pipelines.RedisPipeline': 400,
}

LOG_LEVEL = 'DEBUG'

Introduce an artifical delay to make use of parallelism. to speed up the crawl.
DOWNLOAD_DELAY = 1

#指定要存储的redis数据库的主机ip
REDIS_HOST = '127.0.0.1'

#指定redis数据库主机的端口
REDIS_PORT = 6379

2、实现crawlSpider的分布式爬虫

  • step1:导入RedisCrawlSpider
    from scrapy_redis.spiders import RedisCrawlSpider

  • step2:修改爬虫文件继承的类
    class MyCrawler(RedisCrawlSpider)

  • step3:添加redis_key(根据redis_key从redis数据库中获取起始任务)
    redis_key = ‘爬虫名称:start_urls’
    注意:需要将原来的start_urls去重

    其他代码照常不变

3、实现scrapy.spider的分布式爬虫

  • step1:导入RedisSpider
    from scrapy_redis.spiders import RedisSpider

  • step2:修改爬虫文件继承的类
    class MySpider(RedisSpider):

  • step3:添加redis_key(根据redis_key从redis数据库中获取起始任务)
    redis_key = ‘爬虫名称:start_urls’
    注意:需要将原来的start_urls去重

    其他代码照常不变

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值