zoukankan      html  css  js  c++  java
  • scrapy-redis(七):部署scrapy

    一般我们写好scrapy爬虫,如果需要启动的话,需要进入scrapy项目的根目录,然后运行以下命令:

    scrapy crawl {spidername}

    这样我们就可以在终端查看到爬虫信息了。但爬虫运行状态还需要给上级领导看,或者自己有空的时候就看看,总不可能想看的时候就登录服务器。

    下面就给大家介绍scrapy官方推荐的部署爬虫项目的方法。 
    需要安装scrapyd和scrapyd-client

    对于scrapyd的安装,极力建议大家不要使用pip安装,而是直接从github去下载,然后使用setup安装。而对于scrapyd-client的安装,可以直接使用pip下载安装。

    配置scrapyd 
    下载完scrapyd之后,就需要进行配置。我这里使用的ubuntu 14.04。按照scrapyd文档介绍,我们需要建立一个文件,绝对路径为/etc/scrapyd/scrapyd.conf。然后在文件内加入以下内容:

    [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

    上面这个是scrapyd上的默认配置文件,可以进行自定义的改动。具体请参考官方文档。我前面说过不要使用pip安装scrapyd,因为pypi上的scrapyd版本较低,在webservice这个模块中是没有DaemonStatus这个类的,所以就会报错。

    弄完配置文件,就可以直接在终端输入sudo scrapyd。这样就启动了这个服务。记住这是个服务器,我们需要用scrapyd-client将爬虫部署到scrapyd中。你会在终端看到下面的界面: 
    这里写图片描述

    scrapyd-client 
    这一步非常的简单,安装完scrapyd-client之后,直接进入爬虫所在的根目录,打开scrapy.cfg文件。添加以下内容:

    [deploy]
    url = http://127.0.0.1:6800/ 
    project = myspider
    username = {name}
    password = {passwd}
    • 1
    • 2
    • 3
    • 4
    • 5

    然后在终端运行

    scrapyd-deploy <target> -p <project>
    • 1

    这里写图片描述 
    部署成功会看到上面的输出

    然后就会在根目录生成一堆文件。 
    这里写图片描述

    启动scrapy

    curl http://127.0.0.1:6800/schedule.json -d project=myspider -d spider=myspider

    根据scrapyd的api,利用上面的命令即可启动一个爬虫。

    取消一个爬虫:

    curl http://127.0.0.1:6800/cancel.json -d project=myspider -d job=566dba0ccc0711e6b95c000c294834b5
    
    更多的api接口请参考scrapyd官方文档。

    浏览器中观察爬虫日志 
    假设我们scrapyd服务运行的ip和port为192.168.1.1:6800。那么我们就可以打开浏览器,查看爬虫的抓取log. 
    这里写图片描述

    在浏览器中输入192.168.1.1:6800即可看到上面的页面。点击jobs,即可查看当前运行的爬虫,点击log,就可以查看当前爬虫以及过去爬虫的所有log。

    这里写图片描述 
    上面是爬虫的job,显示已经完成了三个,有一个正在运行

    这里写图片描述 
    上面是log,点击进去有详细的信息

    这里写图片描述
    这是一个正在运行的爬虫的log

    总结 
    至此,我们就全部部署好了一个爬虫。比如我们平常使用的是windows,只要我们在windows上安装了curl,那么我们就可以以命令行的方式启动停止部署在linux上的爬虫,只要确保scrapyd这个服务在运行即可。

    举一个例子: 
    假设我们在测试环境,利用scrapy开发了5个爬虫,分别对应5个不同的网站,比如,A网站,B网站,C网站,D网站,E网站。然后我们有5台服务器,分别是a,b,c,d,e,我们需要把这5个爬虫分别部署到5台服务器上,当然,前提是需要在5台服务器上安装了scrapyd。 
    那么,我们就可以利用scrapyd-client进行快速的部署。只要在这个5个不同的爬虫根目录的scrapy.cfg文件中加入下面这一段就可以了:

    [deploy:local]
    url = http://127.0.0.1:6800/ 
    project = myspider
    username = {name}
    password = {passwd}
    
    [deploy:a]
    url = #服务器a中scrapyd监听的ip和端口 
    project = myspider
    username = {name}
    password = {passwd}
    
    [deploy:b]
    url = #服务器b中scrapyd监听的ip和端口 
    project = myspider
    username = {name}
    password = {passwd}
    
    [deploy:c]
    url = #服务器c中scrapyd监听的ip和端口 
    project = myspider
    username = {name}
    password = {passwd}
    
    [deploy:d]
    url = #服务器d中scrapyd监听的ip和端口 
    project = myspider
    username = {name}
    password = {passwd}
    
    [deploy:e]
    url = #服务器e中scrapyd监听的ip和端口 
    project = myspider
    username = {name}
    password = {passwd}

    然后我们在scrapy项目的根目录,执行scrapyd-deploy就可以把爬虫部署到不同的服务器中了。有多少个单独的爬虫,就执行多少次。

    运行爬虫的话,我们只要利用curl命令就可以,假设我们想要启动a,b,c,d,e这5台服务器中的A网站的爬虫:

    curl http://a服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
    curl http://b服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
    curl http://c服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
    curl http://d服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
    curl http://e服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider

    上面的命令执行5次就可以了。

    当然,我们可以写一个python脚本,利用subprocess,可以节省重复性的工作。

  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/zxtceq/p/8985658.html
Copyright © 2011-2022 走看看