Scrapy是一个流行的爬虫框架,利用Scrapyd,可以将其部署在远程服务端运行,并通过命令对爬虫进行管理,而Gerapy为我们提供了精美的UI,可以在web页面上直接点击操作,管理部署在scrapyed上的爬虫,本文介绍Scrapyd与Gerapy的基本安装与使用方法
 
一、Scrapyd简介:
  Scrapyd是一个服务,允许用户将爬虫部署在服务端,并通过HTTP JSON的方式控制爬虫,并且可以通过web页面监控爬虫状态
二、Scrapyd安装部署:
  在向服务器部署爬虫时,我们需要下载2个模块
  1、scrapyd(安装在服务端,运行服务)
  2、scrapy-client(安装在客户端,用于将自己的爬虫部署到服务器上)
  • 服务端安装部署
    首先在远程的Ubuntu服务器上安装scrapyd:
    pip install scrapyd
    安装完毕后,查看scrapyd的配置文件,scrapyd会在如下位置依次查找配置文件,并以最后一个找到的配置文件为准进行配置
    /etc/scrapyd/scrapyd.conf (Unix)
    c:\scrapyd\scrapyd.conf (Windows)
    /etc/scrapyd/conf.d/* (in alphabetical order, Unix)
    scrapyd.conf
    ~/.scrapyd.conf (users home directory)
    查看scrapyd的安装目录  */site-packages/scrapyd,发现有一个default_scrapyd.conf默认配置文件,打开该文件,显示如下内容
    这里有一个名为bind_address的选项,默认值为127.0.0.1,我们将其改为0.0.0.0( 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有多个IP地址,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过多个ip地址都能够访问该服务。)
 
    配置完毕后输入Scrapyd &启动后台服务
    此时输入netstat -an | grep 6800查看,发现6800端口已经启动监听
    随后,打开浏览器,输入 服务端地址:6800,显示如下页面,配置成功
    不过,此时,我们发现页面中的Available projects一行为空,这是因为我们还没有部署任何Scrapy爬虫项目,接下来,我们要将客户端的Scrapy项目部署到服务器上运行
 
  • 客户端安装部署
    pip install scrapy-client
    执行完毕后,找到scrapy-client的安装目录,发现一个名为scrapyd-deploy的文件,我们把它复制到scrapy项目中与scrapy.cfg同级的目录中(不复制也可以,但这样操作会方便一点)
    打开scrapy.cfg文件,有如下内容,需要做的就是把[deploy]改为[deploy:target]的形式,target名称自拟,然后再把url前的注释去掉,并且将地址改为scrapyd的服务器地址。
    修改完毕后,我们需要用刚刚复制来的scrapyd-deploy来部署爬虫,打开scrapyd-deploy文件,找到如下部分,给出了scrapyd-deploy可以接收的参数以及相应的作用
 
    我们发现输入-l可以列出所有可用的target,由于scrapyd-deploy本身是一个python文件,因此我们输入
    python scrapyd-deploy -l来查看target的配置情况
    
    查看结果与刚才在scrapy.cfg文件中的配置相同。
    随后输入python scrapyd-deploy -L test来查看名为test的target下可用的爬虫项目
    同样与配置相符
 
    随后我们输入python scrapy-deploy test -p toolspider 将test中的toolspider项目部署到scrapyd服务端

    出现以上信息,代表部署成功,此时打开 服务器地址:6800 这个页面,发现Available projects中已经有了我们刚刚部署的toolspider项目
    

 
三、使用Scrapyd管理爬虫
 
  Scrapyd采用http与json的方式管理爬虫,下面来看一下具体的用法
  1、执行爬虫
    执行爬虫用到的是schedule.json,通过向http://localhost:6800/schedule.json提交post请求并附带项目名以及爬虫名参数完成
    在服务端输入curl http://localhost:6800/schedule.json -d project=toolspider -d spider=toolspider执行刚才部署的爬虫(d表示data,即post请求提交的数据),执行完毕后返回如下结果
    此时再查看浏览器,Scrapyd页面,点击Jobs,出现如下信息,爬虫执行完毕
    

  2、查看项目
    查看项目用到的是listprojects.json,此方法采用get方式提交,不接受参数,可以直接在浏览器端提交并查看返回结果
    
    同样,在服务端输入curl http://localhost:6800/schedule.json也可以得到结果
    查看项目中的爬虫,用到的是listspider.json,同样也是get方法,接受一个project参数,即具体项目名,效果如图
    
  3、删除项目
    删除项目用到的是delproject.json,采用post方法,提交一个项目名称的数据
    在服务端输入curl http://localhost:6800/schedule.json -d project=toolspider即可删除
  4、其他
    除此之外还有daemonstatus.json,addversion.json,listversions.json,delversion.json,cancel.json,listjobs.json,具体使用方法可以查看scrapyd官方文档https://scrapyd.readthedocs.io/en/stable/
 
四、采用Gerapy管理爬虫
  scrapyd采用命令行的形式,通过http与json对爬虫进行管理,操作显得有些繁琐,对爬虫的状态展示也不直观,而Gerapy为我们提供了精美的UI与简介的操作方式,只需要用鼠标在浏览器上点击操作便可以完成对爬虫的管理,需要注意的是,Gerapy只为我们提供了操作界面,真正的爬虫还是部署在服务器的Scrapyd上,
  1、Gerapy下载
    pip install gerapy
    下载完成后在命令行中输入gerapy,出现如下信息说明安装成功
  2、Gerapy初始化
    gerapy init
    cd gerapy
    gerapy migrate
    在命令行中输入gerapy init,执行完毕后在当前目录下会生成一个名称为gerapy的文件夹,随后进入该文件夹,下输入gerapy migrate ,成功后在gerapy目录下生成一个sqlite数据库
 
  3、运行Gerapy
    gerapy runserver
    出现如下信息表示执行成功
    随后在浏览器中输入127.0.0.1:8000打开gerapy界面如图,我这里已经配置了一台远程服务器,因此normal显示为1

    点击左侧的Client,随后在Client界面的右上角点击create创建远程主机
    输入Scrapyd服务器的ip与端口(6800),自己随便起个名字,完成配置,结果显示如下

    要执行爬虫,直接点击右侧的schedule便可以显示出当前项目中的所有爬虫信息,点击run按钮便可直接运行爬虫,并实时在页面上显示状态
 
 

Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理的更多相关文章

  1. 爬虫部署 --- scrapyd部署爬虫 + Gerapy 管理界面 scrapyd+gerapy部署流程

    ---------scrapyd部署爬虫---------------1.编写爬虫2.部署环境pip install scrapyd pip install scrapyd-client 启动scra ...

  2. 使用Scrapyd部署Scrapy爬虫到远程服务器上

    1.准备好爬虫程序 2.修改项目配置 找到项目配置文件scrapy.cnf,将里面注释掉的url解开来 本代码需要连接数据库,因此需要修改对应的数据库配置 其实就是将里面的数据库地址进行修改,变成远程 ...

  3. Docker部署Portainer搭建轻量级可视化管理UI

    1. 简介   Portainer是一个轻量级的可视化的管理UI,其本身也是运行在Docker上的单个容器,提供用户更加简单的管理和监控宿主机上的Docker资源. 2. 安装Docker   Doc ...

  4. Scrapy爬虫基本使用

    一.Scrapy爬虫的第一个实例 演示HTML地址 演示HTML页面地址:http://python123.io/ws/demo.html 文件名称:demo.html 产生步骤 步骤1:建议一个Sc ...

  5. Scrapy+Scrapy-redis+Scrapyd+Gerapy 分布式爬虫框架整合

    简介:给正在学习的小伙伴们分享一下自己的感悟,如有理解不正确的地方,望指出,感谢~ 首先介绍一下这个标题吧~ 1. Scrapy:是一个基于Twisted的异步IO框架,有了这个框架,我们就不需要等待 ...

  6. 第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目

    第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目 scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:h ...

  7. 五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目

    scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 pip3 install s ...

  8. scrapy可视化管理工具spiderkeeper使用笔记

    http://www.scrapyd.cn/doc/156.html  入门中文教程 spiderkeeper是一款开源的spider管理工具,可以方便的进行爬虫的启动,暂停,定时,同时可以查看分布式 ...

  9. Scrapy可视化管理软件SpiderKeeper

    通常开发好的Scrapy爬虫部署到服务器上,要不使用nohup命令,要不使用scrapyd.如果使用nohup命令的话,爬虫挂掉了,你可能还不知道,你还得上服务器上查或者做额外的邮件通知操作.如果使用 ...

随机推荐

  1. 转:SQL 关于apply的两种形式cross apply 和 outer apply

    原文地址:http://www.cnblogs.com/Leo_wl/archive/2013/04/02/2997012.html SQL 关于apply的两种形式cross apply 和 out ...

  2. [IDEA_2] IDEA 问题合集

    1. IDEA 通过 Maven 导入的依赖包下面存在红色波浪线 问题描述: 创建的 Maven Project 在添加相关依赖后自动下载,自动添加的依赖包的下面存在红色波浪线,在使用过程中存在问题, ...

  3. 过滤掉URL中的参数部分

    //将超链接的参数部分滤掉 ?xxx if(url.contains("?")){ url=url.substring(0,url.indexOf("?")); ...

  4. [python]python官方原版编码规范路径

    1.进入python官方主页:https://www.python.org/ 2.按如下图进入PEP Index ​ 3.选择第8个,即为python的规范 ​

  5. 12.SolrCloud原理

    转载自http://blog.csdn.net/u011026968/article/details/50336709 内容涉及:SolrCloud的基础知识.架构.索引创建和更新.查询.故障恢复.负 ...

  6. CSS中如何选择ul下li的奇数、偶数行

    <style> #Ulist li:nth-of-type(odd){ margin-left: 20px;}奇数行 #Ulist li:nth-of-type(even){margin- ...

  7. [Java123] Spring

    最近转组需要Hands on进行一些Java开发工作. 已经不是用十几年前初级Java写代码就能应付的了. 踏踏实实拾起来过去含含糊糊走过的章节吧. https://www.cnblogs.com/x ...

  8. 魔法少女【动态规划问题】——NYOJ1204

    个人博客页:https://www.scriptboy.cn/202.html 题目描述: 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙 ...

  9. ELK日志收集分析平台 (Elasticsearch+Logstash+Kibana)使用说明

    使用ELK对返回502的报警进行日志的收集汇总 eg:Server用户访问网站返回502 首先在zabbix上找到Server的IP 然后登录到elk上使用如下搜索条件: pool_select:X. ...

  10. Docker实战(二)之操作Docker容器

    容器是Docker的另外一个核心概念.简单来说,容器是镜像的一个运行实例.所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层.如果认为虚拟机是模拟运行的一整套操作系统系统(包括内核,应 ...