一、安装 scrapyd
D:\>pip install scrapyd
本人对这个scrapyd 也是一知半解,通过摸索,简单理解为一个高级的网站,可以通过它本身的各种 json api 控制你的爬虫,OK,现在启动网站( ctrl+c 关闭)
D:\>scrapyd
出现以下内容表明,已经部署成功啦
2018-07-21T23:59:41+0800 [-] Loading c:\programdata\anaconda3\envs\python27\lib\site-packages\scrapyd\txapp.py...
2018-07-21T23:59:43+0800 [-] Scrapyd web console available at http://0.0.0.0:6800/
2018-07-21T23:59:43+0800 [-] Loaded.
2018-07-21T23:59:43+0800 [twisted.application.app.AppLogger#info] twistd 16.6.0 (c:\programdata\anaconda3\envs\python27\python.exe 2.7.13) starting up.
2018-07-21T23:59:43+0800 [twisted.application.app.AppLogger#info] reactor class: twisted.internet.selectreactor.SelectReactor.
2018-07-21T23:59:43+0800 [-] Site starting on 6800
2018-07-21T23:59:43+0800 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site instance at 0x0000000004AB36C8>
2018-07-21T23:59:43+0800 [Launcher] Scrapyd 1.1.1 started: max_proc=16, runner='scrapyd.runner'
在阿里云本地输入http://localhost:6800/ 已经可以打开这个网站啦!但是我们要从本地开发机上访问它并且调用它的json api,怎么办呢!输入阿里云的外网地址+端口,怎么回事,打不开?!然后我想起了阿里云服务器都必须在安全组里对实例进行配置规则才能访问该端口,好的,我去增加了6800的端口安全组,YES,在本地开发机上能访问到这个地址啦!!!为自己的机制点赞!
二、在本地开发机上安装scrapyd-client
D:\>pip install scrapyd
-
client
执行命令, 安装完成后, 在python环境的scripts中会出现scrapyd-deploy无后缀文件, 这个scrapyd-deploy无后缀文件是启动文件, 在Linux系统下可以运行, 在windows下是不能运行的, 所以我们需要编辑一下使其在windows可以运行
C:\Program Files (x86)\Python36-32\Scripts中,新建一个scrapyd-deploy.bat空白文件,两个内容之间切记一个空格
@echo off
"C:\softs\Python\Python36\python.exe" "C:\softs\Python\Python36\Scripts\scrapyd-deploy" %*
嗯,然后进入爬虫项目目录(进入带有scrapy.cfg文件的目录),
输入D:\pyworkd\bt2014>scrapyd
-
deploy
出现下面这个,scrapyd-deploy安装完毕!
Unknown target: default
三、修改爬虫项目配置文件scrapy.cfg
打开爬虫项目中的scrapy.cfg文件, 这个文件就是给scrapyd-deploy使用的将url这行代码解掉注释, 并且设置你的部署名称
[settings]
default = huawei.settings
[deploy:hw] # hw 自定义
url = http://localhost:6800/
project = huawei # 项目名字
再次执行scrapyd-deploy -l
, 可以看到设置的名称
开始打包前, 执行一个命令 scrapy list
, 这个命令执行成功说明可以打包了, 如果没执行成功说明还有工作没完成
四、到此我们就可以开始打包scrapy项目到scrapyd了, 用命令结合scrapy项目中的scrapy.cfg文件设置来打包
执行打包命令: scrapyd-deploy 部署名称 -p 项目名称
如: scrapyd-deploy hw -p huawei
部署成功就可以去网页中127.0.0.1:6800 查看爬虫运行状态
五、启动我们的爬虫!要一个 curl 工具,windows没有!点服务器部署的那个scrapyd的网站上提示的那个链接去下载吧!最新的来一套,解压,添加系统环境变量。
curl工具下载地址:https://curl.haxx.se/windows/
运行爬虫,一定要使用cmd
命令:
curl http://localhost:6800/schedule.json -d project=PROJECT_NAME -d spider=SPIDER_NAME
示例:
curl http://localhost:6800/schedule.json -dproject=huawei -d spider=hw
D:\pyworks\bt1024>scrapyd-deploy aliyun -p bt1024
Packing version 1554259491
Deploying to project "bt1024" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "DESKTOP-92UJUET", "status": "ok", "project": "bt1024", "version": "1554259491", "spiders": 1}
D:\pyworks\bt1024>curl http://localhost:6800/schedule.json -d project=bt1024 -d spider=bt1024
{"node_name": "DESKTOP-92UJUET", "status": "ok", "jobid": "c6c12de855ba11e9ac0edcfe071af184"}
#启动爬虫 此时参数为 -d project=项目名称 -d spider=爬虫名称
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/schedule.json -d project=firstspider -d spider=dsfootball
{"status": "ok", "jobid": "13c328408ce011e8bcabe99e10d6e876", "node_name": "iZrtjqvcszmo77Z"}
#停止爬虫 此时参数为 -d project=项目名称 -d job=那个网站上显示的job内容
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/cancel.json -d project=firstspider -d job=13c328408ce011e8bcabe99e10d6e876
{"status": "ok", "prevstate": null, "node_name": "iZrtjqvcszmo77Z"}
#删除项目 此时参数为 -d project=项目名称
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/delproject.json -d project=firstspider
{"status": "ok", "node_name": "iZrtjqvcszmo77Z"}
其他:
停止爬虫
爬虫执行成功后,终端会给出该爬虫的 jobid 值,表示该爬虫,后面停止爬虫需要提供jobid
http://localhost:6800/jobs 可以查看jobid
curl http://localhost:6800/listjobs.json?project=huawei 可以获取当前jobid
切记:停止后如果代码需要修改,记得重新部署再执行。
删除scrapy项目
注意:一般删除scrapy项目,需要先执行命令停止项目下在远行的爬虫
curl http://localhost:6800/delproject.json -d project=scrapy项目名称
常用接口:
调度爬虫
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider
# 带上参数
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
取消
curl http://localhost:6800/cancel.json -d project=myproject -d job=jobid
列出项目
curl http://localhost:6800/listprojects.json
列出版本
curl http://localhost:6800/listversions.json?project=myproject
列出爬虫
curl http://localhost:6800/listspiders.json?project=myproject
列出job
curl http://localhost:6800/listjobs.json?project=myproject
删除版本
curl http://localhost:6800/delversion.json -d project=myproject -d version=r99
删除项目
curl http://localhost:6800/delproject.json -d project=myproject
参考:
阿里云WindowsServer部署python scrapy爬虫
部署scrapy爬虫
注意:本文归作者所有,未经作者允许,不得转载