Scrapy爬虫程序监控平台构建(一):Scrapy、Scrapyd
1.基础知识
1.1 scrapy、scrapyd、scrapydweb是什么?
scrapy一个爬虫框架,可以通过工程将繁杂的爬虫程序统一在一起。Scrapy框架介绍
scrapyd相当于一个组件,能够将scrapy项目进行远程部署,调度使用等。因此scrapyd可以看作一个cs(client-server)程序,它是一个服务,因此我们需要安装和配置scrapyd(server)。
scrapydweb是一个基于scrapyd-API的可视化组件,集成并且提供更多可视化功能和更优美的界面。同类型的WEB还有SpiderKeeper、Gerapy。
1.2开源爬虫管理平台选择:
平台名称 | 技术 | 优点 | 缺点 |
---|---|---|---|
SpiderKeeper | Python Flask | 基于scrapyd,开源框架,页面简洁、支持定时任务 | 不支持分页、不支持节点管理、不支持scrapy以外的爬虫。功能比较单一 |
Scrapyweb | Python Flask + Vue | 内置Scrapy日志解压、有多任务运行统计图、支持节点管理、定时任务、邮件提醒、移动界面、功能比较完善。 | 同样不支持Scrapy以外的爬虫 |
Gerapy | Python Django + Vue | 支持节点管理、支持代码编辑、可配置规则 | 同样不支持Scrapy以外的爬虫 |
总结:
SpiderKeeper是最早期的爬虫管理平台、但是功能相对单一,存在局限型;Gerapy功能相对齐全增加了可以网页配置爬虫规则的功能,适合小白,但是项目比较新,体系相对是不是完全成熟;Scrapydweb是一个比较完善的爬虫管理平台;他们三者都是基于scrapyd的监控平台,只能使用与scrapy的爬虫程序。
2.程序安装
2.1安装scrapy和创建一个scrapy项目
这里就不详细介绍了,大家可以参看其他的文章。
2.2安装scrapyd和scrapyd-client和配置
使用pip安装简单方便,但是pip源上的版本并不一定是最新版本。我使用pip安装的是下面版本,去官方看了一下是比较新的版本。
从 GitHub 上下载最新源码安装。下载地址:
- Scrapyd: https://github.com/scrapy/scrapyd
- Scrapyd-client: https://github.com/scrapy/scrapyd-client
- scrapydweb:https://github.com/my8100/scrapydweb
2.2.1安装scrapyd
pip install scrapyd
运行scrapyd
scrapyd
在浏览器中输入:http://localhost:6800/,如果出现下面界面则表示启动成功(不要关闭cmd,后面步骤还需要)
Jobs: 是所有调用过的爬虫的任务列表。
Logs: 所有任务产生的日志。
**注意:**scrapy是一个服务,它需要一个单独的环境作为运行的服务器,不能与本地python环境发在一起使用,最好是建立一个虚拟运行环境,或者放在服务器上。
2.2.2安装scrapyd-client
pip install scrapy-client
可以安装在本地,也可以安装到scrpyd的虚拟环境中,这个只是一个将scrapy程序打包上传到scrapyd服务器的程序,安装完成后会在Script目录下生成scrapyd-deploy,scrapy-deploy这个工具是用来将爬虫的项目的egg文件上传到服务器上, 然后通过接口调用来启动爬虫.。上传egg也可以手动上传, 但是比较麻烦,所以使用scrapyd-deploy更方便。
注意事项:
- scrapyd-client指定版本的原因是下载的默认版本是1.1.0, 缺少scrapyd-client命令, 会提示scrapyd-client command not found。可以使用 pip install scrapyd-client==1.2.0a1
- 生成的scrapyd-deploy在windows平台下无法运行,需要新建一个文件。Scrapy-----Scrapyd-Client的安装
3.部署爬虫
通过scrapyd-deploy部署爬虫,scrapyd-deploy是在爬虫项目里运行的, 也就是和scrapy.cfg文件同级的目录。需要切换到进入爬虫工程的根目录。
3.1修改scrapy.cfg文件
如果有多个爬虫目标服务器, 可以增加[deploy:]区域
[settings]
default = ccidcom.settings
[deploy:Myspiderd] # 默认是[deploy], ccid这里指定的是目标服务器的名称,自己命名
url