分布式部署爬虫项目

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/"

 

猜你喜欢

转载自www.cnblogs.com/airapple/p/9159395.html