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

开始之前轻自行安装好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项目并设置定时任务)