最近发现了一个spdierkeeper的库,这个库的主要用途是在于配合这scrpyd管理你的爬虫,支持一键式部署,定时采集任务,启动,暂停等一系列的操作.
简单来说将scrapyd的api进行封装,最大限度减少你跟命令行交互次数.不得说这个是很棒的事情.

https://github.com/DormyMo/SpiderKeeper SpiderKeeper的github连接

环境配置

由于 scrapyd是基于python3+以上的版本兼容性较好,所以我们需要的环境为

python3.4+、scrapyd、scrapy_client、SpiderKeeper、scrapy & scrapy相关的库、scrapy_reids (如果缺少这个在部署任务会报错(Reids.KeyErroe:'xxx'), xxx我们部署的任务.)

pip install spiderkeeper
pip install scrapy
pip install scrapy_redis
pip install scrapyd
pip install scrapy_client

启动&配置

安装完成之后,便可以启动服务器了

单台服务器

spiderkeeper
# 启动单台服务器,默认启动本地的 http://localhost:6800 scrapyd的服务 | spiderkeeper的默认端口为5000.

连接多台scrapyd服务器.
在分布式中我们的服务器中肯定不止一台,使用spiderkeeper可以很好的解决这个问题

spiderkeeper --server=http://localhost:6800 --server=http://111.111.111.111:6800
 #启动一个spiderkeeper可以同时部署两台服务器的spider

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

进入到spiderkeeper安装目录下:

config.py 更改用户名&密码

# Statement for enabling the development environment
import os

DEBUG = True

# Define the application directory

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(os.path.abspath('.'), 'SpiderKeeper.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
DATABASE_CONNECT_OPTIONS = {}

# Application threads. A common general assumption is
# using 2 per available processor cores - to handle
# incoming requests using one and performing background
# operations using the other.
THREADS_PER_PAGE = 2

# Enable protection agains *Cross-site Request Forgery (CSRF)*
CSRF_ENABLED = True

# Use a secure, unique and absolutely secret key for
# signing the data.
CSRF_SESSION_KEY = "secret"

# Secret key for signing cookies
SECRET_KEY = "secret"

# log
LOG_LEVEL = 'INFO'

# spider services
SERVER_TYPE = 'scrapyd'
SERVERS = ['http://localhost:6800']

# basic auth 这里更改用户名&密码
NO_AUTH = False
BASIC_AUTH_USERNAME = 'admin'
BASIC_AUTH_PASSWORD = 'admin'
BASIC_AUTH_FORCE = True

run.py更改端口号

def parse_opts(config):
    parser = OptionParser(usage="%prog [options]",
                          description="Admin ui for spider service")
    parser.add_option("--host",
                      help="host, default:0.0.0.0",
                      dest='host',
                      default='0.0.0.0')#bind ip 绑定ip 默认全部人可以访问
    parser.add_option("--port",
                      help="port, default:5000",
                      dest='port',
                      type="int",
                      default=5000)#默认端口号5000 可以根据你的需求设计
    parser.add_option("--username",
                      help="basic auth username ,default: %s" % config.get('BASIC_AUTH_USERNAME'),
                      dest='username',
                      default=config.get('BASIC_AUTH_USERNAME'))
    parser.add_option("--password",
                      help="basic auth password ,default: %s" % config.get('BASIC_AUTH_PASSWORD'),
                      dest='password',
                      default=config.get('BASIC_AUTH_PASSWORD'))
    parser.add_option("--type",
                      help="access spider server type, default: %s" % config.get('SERVER_TYPE'),
                      dest='server_type',
                      default=config.get('SERVER_TYPE'))
    parser.add_option("--server",
                      help="servers, default: %s" % config.get('SERVERS'),
                      dest='servers',
                      action='append',
                      default=[])
    parser.add_option("--database-url",
                      help='SpiderKeeper metadata database default: %s' % config.get('SQLALCHEMY_DATABASE_URI'),
                      dest='database_url',
                      default=config.get('SQLALCHEMY_DATABASE_URI'))

    parser.add_option("--no-auth",
                      help="disable basic auth",
                      dest='no_auth',
                      action='store_true')
    parser.add_option("-v", "--verbose",
                      help="log level",
                      dest='verbose',
                      action='store_true')
    return parser.parse_args()

使用scrapyd打包你的项目生成.egg文件,以便后面传到spiderkeeper上面
C:\Users\admin\workspace\pc\Lib\site-packages\scrapyd-clientscrapyd-client安装目录,news.egg为生成的文件命名,文件名可任意命名,要以.egg结尾

python "C:\Users\admin\workspace\pc\Lib\site-packages\scrapyd-client\scrapyd-deploy" --build-egg news.egg

在项目目录下启动scrapyd(注意,必须现在项目目录下的scrapy.cfg中开启url这个选项,默认是注释状态,不生效)

在浏览器访问127.0.0.1:5000,创建项目

 
 

点击创建项目,项目名称自己随意设置

上传刚才生成的egg文件

 
 
 
上传成功

点击仪表盘,添加一个任务

 
 
 
 

spiderkeeper一大优点就是计划任务做的很好,帮助我们减少了一些工作。
这里计划任务根据自己需求设置,设置完点击创建即可

设置完成点击运行即可,如果你设置错了,也可以选择移除它。

 
 

部署完成,回到仪表盘看下自己的爬虫执行状态。

 
 

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

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

windows部署SpiderKeeper(爬虫监控)的更多相关文章

  1. Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理

    Scrapy是一个流行的爬虫框架,利用Scrapyd,可以将其部署在远程服务端运行,并通过命令对爬虫进行管理,而Gerapy为我们提供了精美的UI,可以在web页面上直接点击操作,管理部署在scrap ...

  2. 部署点评Cat监控项目(转)

    原文地址:http://www.bubuko.com/infodetail-986338.html 在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat, ...

  3. Windows下使用性能监视器监控SqlServer的常见指标

    这篇文章主要介绍了Windows下使用性能监视器监控SqlServer的常见指标,常见指标包括Buffer Cache Hit Ratio.Pages/sec. Available Bytes.Dis ...

  4. Visual Studio GitHub For Windows部署

    使用GitHub For Windows部署Visual Studio项目 因为最近同时再看很多技术方面的书,书上的例子有很多自己想亲自尝试一下,但是每次写例子都得创建一个新项目未免太麻烦,索性就整理 ...

  5. Docker部署Zabbix+Grafana监控

    Docker部署Zabbix+Grafana监控 环境 centos 7 ; Docker 17.12.0-ce ; docker-compose version 1.20.1 2018-4-1 当前 ...

  6. 部署点评Cat监控项目

    在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat,总会遇到各种问题,讲解的也不够简明清楚,现在用一个单机来部署运行cat监控项目. 首先,到项目的Gi ...

  7. JMC监控(Windows上远程连接监控Linux服务器的JVM)

    Windows上远程连接监控Linux服务器的JVM:1.Linux服务器上配置:在Tomcat的tomcat-wms/bin/catalina.sh中添加CATALINA_OPTS="-X ...

  8. WebMagic之爬虫监控

    访问我的博客 前言 年前闲着无聊,研究了一阵子爬虫技术,接触到爬虫框架 WebMagic,感觉很好用. 在之后的工作中,接手了新站与第三方接口对接的工作,主要的工作是去抓取对方接口的内容:初始的时候, ...

  9. python使用wmi模块获取windows下的系统信息监控系统-乾颐堂

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取w ...

随机推荐

  1. 【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合

    java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: • 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于 ...

  2. 面试之路(28)-反转链表(reverse ListNode)

    反转链表: java类 public class ListNode{ int key; ListNode next; } 思路分析: 需要三个指针,current,prev和next. current ...

  3. 高仿qq健康

    概述 学习别人的代码,在此基础上 优化代码结构 增加动画 要点记录 通过mRatio参数,让宽高始终是一个比例 贝塞尔曲线手动画矩形圆角 画虚线 根据基准点绘制文字 属性动画的使用 画笔宽度的自适应 ...

  4. rails4 中使用分页的方法

    以前老版本的rails中默认自带分页方法,不过从rails2.0开始就将内置的分页pagination对象移除了,改以第三方gem提供支持.要在新的rails里使用分页也是非常简单啦,首先安装will ...

  5. Django之ModelForm

    简介 Model + Form ==> ModelForm.model和form的结合体,所以有以下功能: 验证 数据库操作 Form回顾 models.py class UserType(mo ...

  6. 深入源码解析类Route

    微软官网对这个类的说明是:提供用于定义路由及获取路由相关信息的属性和方法.这个说明已经很简要的说明了这个类的作用,下面我们就从源码的角度来看看这个类的内部是如何工作的. public class Ro ...

  7. CentOS 7 下安装mosquitto

    简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把 ...

  8. Java IO学习--(一)概述

    在这一小节,我会试着给出Java IO(java.io)包下所有类的概述.更具体地说,我会根据类的用途对类进行分组.这个分组将会使你在未来的工作中,进行类的用途判定时,或者是为某个特定用途选择类时变得 ...

  9. IoC和DI的基本概念的思维导图

    最近在学习Spring开发,IoC这个概念让我有点儿迷糊,控制反转这四个字是在是无法做到望文生义,于是乎就找了一些材料来学习,研究了半天,绘制了下面这幅思维导图.仅供参考!

  10. 【大前端攻城狮之路】JavaScript函数式编程

    转眼之间已入五月,自己毕业也马上有三年了.大学计算机系的同学大多都在北京混迹,大家为了升职加薪,娶媳妇买房,熬夜加班跟上线,出差pk脑残客户.同学聚会时有不少兄弟已经体重飙升,开始关注13号地铁线上铺 ...