美文网首页python爬虫
服务器采用scrapyd 部署scrapy项目并设置定时任务

服务器采用scrapyd 部署scrapy项目并设置定时任务

作者: 嗨_小罗哥 | 来源:发表于2019-11-19 17:12 被阅读0次

    开始之前轻自行安装好python和创建好虚拟环境

    • python版本:python3.6
    • 虚拟环境:virtualenv

    将代码上传到服务器

    • 方式一(本地):scp name.zip root@xxxx:/home/src
      /home/src为服务器项目存放地址
    • 方式二:将代码上传到github,再将代码克隆下来

    具体步骤

    • 创建虚拟环境: virtualenv --no-site-packages -p python路径 虚拟环境名字
    • 进入虚拟环境:source python_env/env/bin/activate 根据自己虚拟环境路径而定
    • 安装程序需要的库,例如scrapy,requests等
    • 安装scrapyd:pip install scrapyd
    • 安装scrapyd-client: pip install scrapyd-client
    • 编辑scrapyd配置文件
      1.在/etc/下创建 scrapyd
      2.进入scrapyd路径下,直接 vim 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 = 10
    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-deploy -h 检测是否安装成功


      image.png
    • 进入到你scarpy项目的目录下,修改scrapy.cfg文件
      image.png
      取消url这一行的注释,并将IP地址修改为自己服务器的IP地址
    • 部署爬虫 :scrapyd-deploy -p projectname 或者 scrapyd-deploy。response响应200,表示部署成功
    • 运行爬虫:curl http://服务器IP地址:6800/schedule.json-d project=projectname -d spider=spidername
    • 关闭爬虫 :curl http://localhost:6800/cancel.json -d project=projectname -d job='jobid'

    设置定时任务:

    • 创建一个专门的shell文件夹,在shell文件夹下编写shell脚本,我这里创建的shell脚本名字为u17.sh,编辑如下内容
    #!/bin/bash
    source /home/python_env/env/bin/activate
    cd /home/src/U17
    curl http://123.56.16.18:6800/schedule.json -d project=U17 -d spider=yaoqi
    

    1.第一行表示进入到虚拟环境
    2.第二行表示进入到自己scrapy项目
    3.第三行表示运行命令

    • 安装 crontab用来设置定时任务:yum install crontab
    • 启动 crontab :systemctl enable crond 或者 service crond start
    • 如果使用service crond start 出现以下报错:
    出现Redirecting to /bin/systemctl start crond.service,
    即service crond start 需要替换为systemctl方式
    
    • 编辑crontab服务文件:crontab -e,编辑内容如下:
    50 15 19 * *  sh /home/shell/U17.sh > /home/shell/spider.log
    
    • 我这里表示下午3点50分执行U17.sh脚本,并输入日志到指定路径下。crontab的语法规则格式不太清楚的朋友请自己百度

    展示运行效果图

    image.png

    相关文章

      网友评论

        本文标题:服务器采用scrapyd 部署scrapy项目并设置定时任务

        本文链接:https://www.haomeiwen.com/subject/wjqgictx.html