scrapy和redis一起用,构成分布式爬虫

scrapy是一个分布式的爬虫框架,如果像普通爬虫一样使用,那么毫无意义,如果要使用分布式爬虫,那么就需要配置Redis

安装及使用

在终端中使用
pip install scrapy_redis
即可安装
pip 会自动安装以来

使用Redis缓存网页并自动去重

由于Scrapy_redis已经封装了大部分的流程,所以我们使用它不会有任何难度。

  1. 启动redis

在Windows系统中,通过CMD的cd命令进入存放Redis的文件夹,并运行:
redis-server.exe
2. 修改爬虫

在前面的代码中,爬虫继承自scrapy.Spider这个父类。这是Scrapy里面最基本的一个爬虫类,只能实现基本的爬虫功能。现在需要把它替换掉,从而实现更高级的功能。首先需要导入支持Redis的爬虫父类并使用:
from scrapy_redis.spiders import RedisSpiderclass Exercise114Spider(RedisSpider):name = “exercise11_4”
`redis_key = ‘exercisell4spider : start_urls’

这里的redis_key实际上就是一个变量名,之后爬虫爬到的所有URL都会保存到Redis中这个名为“exercise114spider:start_urls”的列表下面,爬虫同时也会从这个列表中读取后续页面的URL。这个变量名可以任意修改,里面的英文冒号也不是必需的。不过一般习惯上会写成“爬虫名:start_urls”这种形式,这样看到名字就知道保存的是什么内容了。

此时已经建立了一个分布式爬虫,只不过现在只有一台计算机。

修改设置

爬虫已经被修改成分布式了,但是还差一步,还需要修改setting

  1. 修改scheduler
    首先是调度Scheduler的替换。这是Scrapy中的调度员。在settings.py中添加以下代码
    #Enables scheduling storing requests queue in redis.SCHEDULER = "scrapy_redis.scheduler.Scheduler"
  2. 去重
    # Ensure all spiders share same duplicates filter through redis.DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
  3. 修改调度
    1. 队列
      SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.SpiderQueue’

    2. SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.SpiderStack’
    3. 优先级队列
      SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.SpiderPriorityQueue’
    4. 不清理Redis队列
      crawls.SCHEDULER_PERSIST =True

如果这一项为True,那么Redis中的URL不会被Scrapy_redis清理掉。这样的好处是,爬虫停止了再重新启动,它会从上次暂停的地方开始继续爬取。如果设置成了False,那么Scrapy_redis每一次读取了URL以后,就会把这个URL删除。爬虫暂停以后再重新启动,它会重新开始爬。由于现在的爬虫和Redis在同一台计算机上面运行,所以可以不需要配置Redis的信息。Scrapy_redis会默认Redis就运行在现在这台计算机上,IP和端口也都是默认的127.0.0.1和6379。

果Redis不在本地的话,就需要将它们写出来

REDIS_HOST = '127.0.0.1#修改为Redis的实际IP地址
REDIS_PORT = 6379 #修改为Redis的实际端

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值