首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仓鼠学习笔记:Scrapy爬虫可视化管理工具SpiderKeeper

百度百科的定义:Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中,通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。

我们将开发好的Scrapy爬虫部署到服务器上,会使用nohup命令或者Scrapyd。但是如果使用nohup命令的话,弊端就是假使爬虫挂掉了,你可能还不知道,你还得上服务器上查或者做额外的邮件通知操作;如果使用Scrapyd,除了部署时候相对较为复杂,功能简单,其余还好。

什么是Scarpyd?

Scrapyd是一个用来部署和运行Scrapy项目的应用,由Scrapy的开发者开发。其可以通过一个简单的Json API来部署(上传)或者控制你的项目。

Scrapyd可以用来管理多个项目,并且每个项目还可以上传多个版本,不过只有最新的版本会被使用。在安装并开启Scrapyd之后,它将会挂起一个服务来监听运行爬虫的请求,并且根据请求为每一个爬虫启用一个进程来运行。

SpiderKeeper是一款管理爬虫的工具,类似scrapinghub的部署功能,能多台服务器部署爬虫,定时执行爬虫,查看爬虫日志,查看爬虫执行情况等功能。本文的目的是实现一个不间断的可视化爬虫管理系统。

项目地址:

https://github.com/DormyMo/SpiderKeeper

0x01 运行环境

Parrot Security 4.4

Python2.7

Python3.6

pip

supervisor

注意:由于我虚拟机部署ubuntu时候有未知原因的docker部署报错,所以自己用的是Parrot。ParrotSecurity是一款完整的Linux发行版,基于DebianJessie核心,包括诸多流行渗透测试工具,如加密、云、匿名、数字取证分析和编程等方面的软件。其中相关依赖库需要自行编译安装。

0x02 安装

1、supervisor安装:

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

2、scrapy:

3、scrapyd:

出现successfully installed就是安装成功了,建议更换源为国内源,Parrotsec我使用的官方源,下载很慢。

4、scrapyd-client

2、scrapy-redis

2、scrapyd

3、SpiderKeeper

tips:建议使用root权限安装,中途可能会安装很多依赖库。

0x03 配置

1、scrapyd的配置:

查找scrapyd的路径:

find / -name scrapyd

查到两个结果,一个是scrapyd的执行程序,一个是scrapyd的库文件。

修改配置,我这里使用的是nano,使用vim或者gedit均可。

cd /home/user/.local/lib/python2.7/site-packages/scrapyd

nanodefault_scrapyd.conf

配置如下:

其中bind_address修改成0.0.0.0表示允许远程访问。

[scrapyd]

eggs_dir = eggs

logs_dir = logs

items_dir =

jobs_to_keep = 5

dbs_dir = dbs

max_proc = 0

max_proc_per_cpu = 4

finished_to_keep = 100

poll_interval = 5.0

bind_address = 0.0.0.0

http_port = 6800

debug = off

runner = scrapyd.runner

application = scrapyd.app.application

launcher = scrapyd.launcher.Launcher

webroot = scrapyd.website.Root

[services]

schedule.json = scrapyd.webservice.Schedule

cancel.json = scrapyd.webservice.Cancel

addversion.json = scrapyd.webservice.AddVersion

listprojects.json = scrapyd.webservice.ListProjects

listversions.json = scrapyd.webservice.ListVersions

listspiders.json = scrapyd.webservice.ListSpiders

delproject.json = scrapyd.webservice.DeleteProject

delversion.json = scrapyd.webservice.DeleteVersion

listjobs.json = scrapyd.webservice.ListJobs

daemonstatus.json = scrapyd.webservice.DaemonStatus

2、supervisor的配置:

#创建配置的文件夹和配置文件

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

#编辑配置文件

vim /etc/supervisor/supervisord.conf

;[include];files = relative/directory/*.ini

改为

[include]files = conf.d/*.conf

#新建conf.d文件夹

mkdir /etc/supervisor/conf.d

#添加scrapyd的配置文件

vim /etc/supervisor/conf.d/scrapyd.conf

[program:scrapyd]

command=/usr/local/python3.5/bin/scrapyd

directory=/opt/SpiderKeeper

user=root

stderr_logfile=/var/log/scrapyd.err.log

stdout_logfile=/var/log/scrapyd.out.log

#添加spiderkeeper的配置文件

vim /etc/supervisor/conf.d/spiderkeeper.conf

[program:spiderkeeper]

command=spiderkeeper --server=http://localhost:6800

directory=/opt/SpiderKeeper

user=root

stderr_logfile=/var/log/spiderkeeper.err.log

stdout_logfile=/var/log/spiderkeeper.out.log

#启动supervisor

supervisord -c /etc/supervisor/supervisord.conf

0x04 使用

1、启动scrapyd:~$ scrapyd

启动成功如下所示,浏览器可访问到scrapyd的管理界面。

2、启动SpiderKeeper:~$ spiderkeeper

注意:如启动需要输入账号密码,均为admin。

访问localhost:5000可以看到如下界面:

3、scrapyd项目部署:

编辑需要部署的项目的scrapy.cfg文件,需要将哪一个爬虫部署到scrapyd中,就配置该项目的该文件。

[deploy:部署名(部署名可以自行定义)]

url = http://127.0.0.1:6800/

project = 项目名(创建爬虫项目时使用的名称)

同样在scrapy项目路径下执行

scrapyd-deploy 部署名 -p 项目名称

4、SpiderKeeper项目部署:

首先在项目路径中“生蛋”,即打包egg文件。

scrapyd-deploy --build-egg output.egg

然后打开SpiderKeeper的页面,点击deploy,点击create project创建新项目:

点击选择文件,上传之前创建的.egg文件:

至此,部署完成。

SpiderKeeper可以识别多台服务器的scrapyd,具体多加--server就好。

0x05 SpiderKeeper使用指南

SpiderKeeper的功能都在左边的菜单栏中。

Dashboard

主界面,可以查看所有爬虫(暂停的,未启动的,运行中的)的情况,如果要运行爬虫可以点击该页面右上角的runonce。

Periodic Jobs

Running Stats

这里查看存活爬虫的运行情况。

Manage

删除任务操作。

0x06 总结

不想运行了也可以点击结束爬虫,需要注意的是,一个爬虫结束后,需要在进行添加一次任务。spiderkeeper封装了scrapyd的log接口,我们可以直接点击log查看爬虫的异常信息。

如果想把监控部署在网络上,项目目录下scrapy.cfg中的url需要配置成0.0.0.0,设置完请重启scrapyd。

总体来说,SpiderKeeper是个不错的开源爬虫可视化工具,对于爬虫的管理算是做到了美观而且简单。配合supervisord可以实现不间断执行,欢迎各位交流与学习爬虫可视化监控方面的话题,后面还会继续介绍其他几个常用的爬虫可视化工具的部署。

原创:仓鼠@仓鼠有话说

转载请注明来处,感谢阅读与分享。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106G0YRK300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券