分布式部署爬虫项目

scrapy : 一个框架,不能实现分布式爬取
scrapy-redis : 基于这个框架开发的一套组件,可以让scrapy实现分布式的爬取

所以需要安装扩展库  : pip  install  scrapy-redis

首先进入这个网站获取分布式爬虫样本 : https://github.com/rmax/scrapy-redis

如果你的电脑安装了Github ,

 

可以直接进入git终端

然后输入   git clone   https://github.com/rmax/scrapy-redis 

将文件下载下来

打开example-project\example\spiders

dmoz.py : 普通crawlspider,没有参考价值
myspider_redis.py : 分布式的Spider模板
mycrawler_redis.py : 分布式的CrawlSpider模板

打开mycrawler_redis.py 

对比

RedisCrawlSpider         CrawlSpider

   name                              name

 

   redis_key                       start_urls


   __init__()                          allowed_domains

注意:__init__()是一个坑,现在还是使用allowed_domains这种列表的形式

存储到Redis:

  (1)scrapy-redis组件已经写好往redis中存放的管道,只需要使用即可,默认存储到本机的redis服务中

     (2)如果想存储到其它的redis服务中,需要在settings件中配置

        REDIS_HOST = 'ip地址'
        REDIS_PORT = 6379

进入主题,开始部署:

  (1)爬虫文件按照模板文件修改

  (2)配置文件中添加

      # 使用scrapy-redis组件的去重队列
      DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

      # 使用scrapy-redis组件自己的调度器
      SCHEDULER = "scrapy_redis.scheduler.Scheduler"

      # 是否允许暂停
      SCHEDULER_PERSIST = True

   (3)把代码复制到需要的部署的服务器上,服务器数量不限制(随心所欲,不过还是要节制,避免浪费)

   (4)开始跑起来           输入指令 : scrapy runspider xxx.py          注意:指令不再是scrapy crawl xx

   (5)此时在Redis中添加起始url

      lpush 项目类名小写:start_urls "网址"  如:lpush moviesspider:start_urls "http://www.id97.com/movie/"

 

 

 

 

转载于:https://www.cnblogs.com/airapple/p/9159395.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值