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

我们可以通过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项目的部署、管理等操作,可以大大提高效率。

原文发布于微信公众号 - 进击的Coder(FightingCoder)

原文发表时间:2018-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏walterlv - 吕毅的博客

命令“"xxx.exe" xxx”已退出,代码为 3/123/9009。VS 的这些编译错误代码代表了什么意思?

发布于 2018-03-09 00:44 更新于 2018-04...

401
来自专栏Java后端生活

Linux(八)用户管理

1399
来自专栏大内老A

.NET Core多平台开发体验[4]: Docker

对于一个 .NET开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker。Docker是Github上最受欢迎的开源项目之一,它号称要成为所...

3367
来自专栏web编程技术分享

ICONFONT字体图标库使用

3198
来自专栏农夫安全

python脚本下载小密圈中的内容

这个python脚本主要的目的是为了批量下载指定小密圈里的所有文件,我们就以安全文库为例:

1073
来自专栏13blog.site

JqGrid分页按钮图标不显示的bug

1174
来自专栏iOS开发攻城狮的集散地

iOS 友盟崩溃日志定位代码

如果我的介绍没帮到你,可以看看这篇文章: http://www.jianshu.com/p/77d8b5e0d8c3

681
来自专栏圣杰的专栏

ABP入门系列(12)——如何升级Abp并调试源码

源码路径:Github-LearningMpaAbp 1. 升级Abp 本系列教程是基于Abp V1.0版本,现在Abp版本已经升级至V1.4.2(截至至文章发...

2245
来自专栏应兆康的专栏

【腾讯云的1001种玩法】如何利用腾讯云搭建个人网盘( Seafile )

在这个数据爆炸的时代,大部分人已经离不开个人云服务了,针对信息量超大的这回各种网盘已经扑面而来,但是,现大多数网盘均停止服务。本文分享了如何利用腾讯云搭建Sea...

3.1K6
来自专栏walterlv - 吕毅的博客

为 Visual Studio 使用通配符批量添加项目文件

发布于 2017-09-26 13:12 更新于 2018-01...

661

扫码关注云+社区