开始之前轻自行安装好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 检测是否安装成功
- 进入到你scarpy项目的目录下,修改scrapy.cfg文件
取消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的语法规则格式不太清楚的朋友请自己百度