分布式爬虫的部署之Gerapy分布式管理

2,225 阅读4分钟

我们可以通过Scrapyd-Client将Scrapy项目部署到Scrapyd上,并且可以通过Scrapyd API来控制Scrapy的运行。那么,我们是否可以做到更优化?方法是否可以更方便可控?

我们重新分析一下当前可以优化的问题。

  • 使用Scrapyd-Client部署时,需要在配置文件中配置好各台主机的地址,然后利用命令行执行部署过程。如果我们省去各台主机的地址配置,将命令行对接图形界面,只需要点击按钮即可实现批量部署,这样就更方便了。

  • 使用Scrapyd API可以控制Scrapy任务的启动、终止等工作,但很多操作还是需要代码来实现,同时获取爬取日志还比较烦琐。如果我们有一个图形界面,只需要点击按钮即可启动和终止爬虫任务,同时还可以实时查看爬取日志报告,那这将大大节省我们的时间和精力。

所以我们的终极目标是如下内容。

  • 更方便地控制爬虫运行;

  • 更直观地查看爬虫状态;

  • 更实时地查看爬取结果;

  • 更简单地实现项目部署;

  • 更统一地实现主机管理。

上述所有的工作均可通过Gerapy来实现。

Gerapy是一个基于Scrapyd、Scrapyd API、Django、Vue.js搭建的分布式爬虫管理框架。接下来将简单介绍它的使用方法。

一、准备工作

请确保已经正确安装好了Gerapy。

二、使用说明

利用gerapy命令新建一个项目,命令如下:

gerapy init

在当前目录下生成一个gerapy文件夹。进入gerapy文件夹,会发现一个空的projects文件夹,后文会提及。

这时先对数据库进行初始化:

gerapy migrate

这样会生成一个SQLite数据库,数据库保存各个主机配置信息、部署版本等。

启动Gerapy服务,命令如下:

gerapy runserver

这样即可在默认8000端口上开启Gerapy服务。我们用浏览器打开:http://localhost:8000,即可进入Gerapy的管理页面,这里提供了主机管理和项目管理的功能。

在主机管理中添加各台主机的Scrapyd运行地址和端口,并加以名称标记。之后各台主机便会出现在主机列表中。Gerapy会监控各台主机的运行状况并加以不同的状态标识,如下图所示。

刚才我们提到在gerapy目录下有一个空的projects文件夹,它就是存放Scrapy目录的文件夹。如果想要部署某个Scrapy项目,只需要将该项目文件放到projects文件夹下即可。

这里我放了两个Scrapy项目,如下图所示。

重新回到Gerapy管理界面,点击项目管理,即可看到当前项目列表,如下图所示。

由于此处有过打包和部署记录,这里分别予以显示。

Gerapy提供了项目在线编辑功能。点击编辑,即可可视化地对项目进行编辑,如下图所示。

如果项目没有问题,可以点击部署进行打包和部署。部署之前需要打包项目,打包时可以指定版本描述,如下图所示。

打包完成之后,直接点击部署按钮即可将打包好的Scrapy项目部署到对应的云主机上,同时也可以批量部署,如下图所示。

部署完毕之后就可以回到主机管理页面进行任务调度。点击调度即可进入任务管理页面,可以查看当前主机所有任务的运行状态,如下图所示。

我们通过点击新任务、停止等按钮来实现任务的启动和停止等操作,同时也可以通过展开任务条目查看日志详情,如下图所示。

这样我们就可以实时查看到各个任务运行状态。

以上内容便是Gerapy功能的简单介绍。通过Gerapy,我们可以更加方便地管理、部署和监控Scrapy项目,尤其是对分布式爬虫来说,使用Gerapy会更加方便。

更多信息可以查看Gerapy的GitHub地址:https://github.com/Gerapy。

三、结语

本节我们介绍了Gerapy的简单用法,利用它我们可以方便地实现Scrapy项目的部署、管理等操作,可以大大提高效率。