百度百科的定义: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可以实现不间断执行,欢迎各位交流与学习爬虫可视化监控方面的话题,后面还会继续介绍其他几个常用的爬虫可视化工具的部署。
原创:仓鼠@仓鼠有话说
转载请注明来处,感谢阅读与分享。
领取专属 10元无门槛券
私享最新 技术干货