通过<老家伙>spiderkeeper运行scrapy爬虫

387 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情

写在前面

本篇博客内容其实和上一篇涉及的内容类似,都是爬虫管理平台。你可以通过搜索引擎找到爬虫管理平台的定义:

爬虫管理平台是一个一站式管理系统,集爬虫部署、任务调度、任务监控、结果展示等模块于一体,通常配有可视化 UI 界面,可以在 Web 端通过与 UI 界面交互来有效管理爬虫。爬虫管理平台一般来说是支持分布式的,可以在多台机器上协作运行。

目前在市场上流通的一些开源爬虫管理平台如下

  • Scrapydweb 上篇博客介绍的,采用Flask+VUE实现,UI比较美观,支持scrapy日志解析、节点管理、定时任务、邮件提醒等功能,但是不支持scrapy以外的其他爬虫,比较遗憾。
  • SpiderKeeper 本篇博客待介绍的,基于scrapyd,开源版的scrapyhub,同样不支持scrapy以外的爬虫。
  • Gerapy 采用Django+VUE实现,该平台国内大佬开发,UI美观,支持的功能与Scrapydweb类似,后面单独写一篇博客给大家介绍一下。
  • Grawlab 采用Golang+VUE 实现,该平台不局限于scrapy了,可以运行各种爬虫,不过部署比较复杂,后面依旧单独写一篇博客给大家分享。

spiderkeeper官网

github地址:github.com/DormyMo/Spi…

编写爬虫,搭建spiderkeeper

我们依旧采用scrapy写一个简单的爬虫,该步骤自行完成吧,我这里省略了。

安装spiderkeeper

通过命令

pip install spiderkeeper -i pypi.douban.com/simple

执行之后,发现果然一次成功永远都是难得的,错误如图,核心的内容就是 ImportError: cannot import name 'Feature' from 'setuptools'

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

该错误是因为我们的setuptools高于46.0版本,降低一下setuptools即可解决问题

pip install --upgrade pip setuptools==45.2.0 -i pypi.douban.com/simple

这个是因为spiderkeeper比较老的原因,建议后续自行在更新回去,例如我在安装之后就出现了如下问题,提示我很多模块的版本都降低了,对scrapyweb产生了影响。

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

其他你还需要安装的模块如下,安装内容可以参考第82与83篇博客内容

pip install scrapy
pip install scrapyd
pip install scrapyd-client

运行scrapyd

命令行运行scrapyd,注意必须在scrapy.cfg目录运行,打开浏览器地址 http://127.0.0.1:6800/

再另起窗口执行spiderkeeper命令

命令行运行 spiderkeeper,正确运行如下图所示,打开浏览器访问http://127.0.0.1:5000 输入账号admin和密码admin即可登录成功。

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

创建项目

点击页面右侧中心的Create Project,出现下图

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

打包egg文件

scrapy的项目根目录,也就是和setting.py一个目录,运行下述命令,baidu2020-09-01.egg 是egg名字,可以自行起名

scrapyd-deploy --build-egg baidu2020-09-01.egg

这步操作,有的人喜欢叫做 “生蛋”

上传egg文件到项目

网页文件上传操作,非常简单

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

执行项目

点击Dashboard然后点击Runonce选择对于的爬虫文件运行即可。注意这个地方需要手动刷新一下页面,才可以看到下图。

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

查看日志

Dashboard页面点击log即可查阅日志

Python爬虫入门教程 84-100 通过<老家伙>spiderkeeper运行scrapy爬虫

Periodic Jobs

注意到左侧还有一个Periodic Jobs,该模块是定时任务,点击右上角的addjobs后可以添加任务,除了之前有的选项之后还可以设置每个月/每星期/每天/每小时/每分钟的定时爬虫

Running Stats

查看爬虫的运行情况

连接多台scrapyd服务器

在分布式中,服务器肯定不止一台,使用spiderkeeper可以快速部署到多台服务器,参考命令

spiderkeeper --server=http://222.222.222.222:6800 --server=http://111.111.111.111:6800

更改用户名&密码&更改端口号

刚才我们访问spiderkeeper的账号和密码是admin,该内容可以修改,找到模块安装路径,例如我本地的安装地址为

C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\SpiderKeeper

修改config.py文件之后,重启spiderkeeper即可

 run.py更改端口号

写在后面

作为爬虫管理平台的spiderkeeper在功能上保证了基本功能的可用,搭建过程与界面UI整体体验还可以,大家可以自行试一下。