Gerapy 爬虫管理框架的使用

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

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

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

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

所以我们的目标其实是:更方便地控制爬虫运行、更直观地查看爬虫状态、更实时地查看爬取结果、更简单地实现项目部署、更统一地实现主机管理,而所有这些工作均可通过Gerapy来实现。

Gerapy 是一个基于 Scrapyd、ScrapydAPI、Django、Vue.js 搭建的分布式爬虫管理框架,本节中我们来简单介绍它的用法。

准备工作

在开始之前,请确保已经正确安装好了 Gerapy,同样使用 pip3 安装即可:

pip3 install gerapy

更详细的安装说明可以参考: https://setup.scrape.center/gerapy

使用说明

安装完 Gerapy 之后,我们就可以使用 gerapy 命令了。首先,可以利用 gerapy init 命令新建一个工作目录,如下:

gerapy init

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

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

gerapy migrate

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

接下来,我们可以生成一个管理员账号:

gerapy initadmin

这时候可以生成一个用户名和密码都为 admin 的管理员账号,用于后续系统的登录。

当然,如果不想使用默认的 admin 账号,也可以利用如下命令来创建单独的账号:

gerapy createsuperuser

输入用户名和密码之后,就可以创建一个管理员账号了。

接下来,启动 Gerapy 服务,命令如下:

gerapy runserver

这样即可在默认 8000 端口上开启 Gerapy 服务,用浏览器打开 http://localhost:8000 即可进入 Gerapy 的管理页面。

这时候会提示输入用户名和密码,如图17-2所示。

图17-2 登录界面

输入用户名和密码,即可登录系统了。可以看到,左侧菜单栏有主机管理、项目管理、任务管理三大模块。

在主机管理中,我们可以添加各台主机的Scrapyd运行地址和端口,并加上名称标记。比如,要添加主机A(192.168.2.3),就可以按照图17-3这样填写。

图17-3 创建主机

这里的端口我们填写的是 6800,即 Scrapyd 的运行端口。

添加之后,该主机便会出现在主机列表中,Gerapy 会监控各台主机的运行状况并以不同的状态标识,如图 17-4 所示。

图17-4 主机列表

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

这里我们可以将 16.3 节的分布式爬虫项目放入 projects 文件夹,如图 17-5 所示。

图17-5 projects文件夹

然后重新回到 Gerapy 管理界面,点击 “项目管理”,即可看到当前项目列表,如图 17-6 所示。

图17-6 项目列表

Gerapy 提供了项目在线编辑功能,我们点击 “编辑” 按钮即可可视化地对项目进行编辑,如图 17-7 所示。

图17-7 编辑项目

如果项目没有问题,可以点击 “部署” 按钮进行打包和部署。但是部署之前需要打包项目,打包时可以指定版本描述,如图 17-8 所示。

图17-8 项目打包

打包完成之后,直接点击 “部署” 按钮即可将打包好的 Scrapy 项目部署到对应的云主机上,如图 17-9 所示。当然,我们也可以批量部署。

图17-9 部署项目

部署完毕之后,就可以回到 “主机管理” 页面进行任务调度了。点击“调度”即可进入“任务管 理”页面,查看当前主机所有任务的运行状态。我们可以通过点击“新任务”“停止”等按钮来实现任务的启动和停止等操作,同时也可以通过展开任务条目查看日志详情,如图 17-10 所示。

图 17-10 查看日志详情

另外,我们还可以在“定时任务”面板中添加一些定时任务,支持单次执行、crontab执行等规则,更多的介绍可以参考Gerapy的官方文档: https://docs.gerapy.com

总结

本节中,我们介绍了 Gerapy 的简单用法,利用它我们可以方便地实现 Scrapy 项目的部署、管理等操作。尤其是对于分布式爬虫的管理来说,Gerapy 可以帮我们提高更多效率,省去更多烦琐的步骤。