我们可以通过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管理界面,点击项目管理,即可看到当前项目列表,如下图所示。