分布式部署爬虫项目

Posted airapple

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式部署爬虫项目相关的知识,希望对你有一定的参考价值。

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-projectexamplespiders

技术分享图片

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

 

 

 

 









以上是关于分布式部署爬虫项目的主要内容,如果未能解决你的问题,请参考以下文章

五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目

第十五章 分布式爬虫的部署

分布式爬虫的部署之Scrapyd对接Docker

最方便分布式爬虫管理框架--Gerapy

Python爬虫从入门到放弃(二十一)之 Scrapy分布式部署

Python爬虫从入门到放弃(二十一)之 Scrapy分布式部署