官方文档:http://scrapyd.readthedocs.io/en/stable/
scrapy爬虫写好后,一般需要用命令行运行。scrapyd部署能够在网页端查看正在执行的任务,也能新建爬虫任务,和终止爬虫任务。优点:在网页端管理爬虫,可以控制多个爬虫任务。
1.安装
pip install scrapyd
pip install scrapyd-client
2.基本使用
2.1 运行scrapyd
在scrapy.cfg中,取消#url = http://localhost:6800/前面的“#” 。
首先切换命令行路径到Scrapy项目的根目录下,
开启scrapyd服务,输入scrapyd
,将scrapyd运行起来
然后新开一个终端切换路径至scrapy工程根目录,发布scrapyd项目,运行命令:scrapd-deploy -p projectName
验证是否发布成功:scrapyd-deploy -l
2.2 发布工程到scrapyd
上述命令已经开启服务,并创建了爬虫项目
2.3 创建爬虫任务
命令行输入
curl http://localhost:6800/schedule.json -d project=projectName -d spider=spiderName
3. 查看爬虫任务
在网页中输入:http://localhost:6800/
4.修改scrapyd的配置
scrapyd默认保留5条日志。
默认绑定地址为127.0.0.1。如果是在服务器部署爬虫需要在其他主机访问则修改地址为0.0.0.0pip show scrapyd
找到scrapyd的位置
一些常用命令:
-
查看状态:
scrapyd-deploy -l
-
启动爬虫:
curl http://localhost:6800/schedule.json -d project=PROJECT_NAME -d spider=SPIDER_NAME
-
停止爬虫:
curl http://localhost:6800/cancel.json -d project=PROJECT_NAME -d job=JOB_ID
-
删除项目:
curl http://localhost:6800/delproject.json -d project=PROJECT_NAME
-
列出部署过的项目:
-
列出某个项目内的爬虫:
curl http://localhost:6800/listspiders.json?project=PROJECT_NAME
-
列出某个项目的job:
curl http://localhost:6800/listjobs.json?project=PROJECT_NAME
1、获取状态
http://127.0.0.1:6800/daemonstatus.json
2、获取项目列表
http://127.0.0.1:6800/listprojects.json
3、获取项目下已发布的爬虫列表
http://127.0.0.1:6800/listspiders.json?project=myproject
4、获取项目下已发布的爬虫版本列表
http://127.0.0.1:6800/listversions.json?project=myproject
5、获取爬虫运行状态
http://127.0.0.1:6800/listjobs.json?project=myproject
6、启动服务器上某一爬虫(必须是已发布到服务器的爬虫)
http://localhost:6800/schedule.json (post方式,data={"project":myproject,"spider":myspider})
7、删除某一版本爬虫
http://127.0.0.1:6800/delversion.json (post方式,data={"project":myproject,"version":myversion})
8、删除某一工程,包括该工程下的各版本爬虫
http://127.0.0.1:6800/delproject.json(post方式,data={"project":myproject})
参考文章:https://www.cnblogs.com/zhongtang/p/5634545.html
重启scrapyd的方法
(1)ps aux|grep scrapyd:找到scrapyd的pid
(2) kill -9 pid 或者kill pid
(3)screen -S scrapyd 新建一个进程
(4) 在进程里启动scrapyd
/usr/bin/python /usr/local/bin/scrapyd
(5)ctrl+A+D退出进程
(6)改工程的scrapy.cfg文件,如果url有#号,把url前的#去掉
(7)可以scrapyd-deploy工程了
screen参考:
https://www.ibm.com/developerworks/cn/linux/l-cn-screen/
http://man.linuxde.net/screen
杀死screen会话 screen -X -S pid quit 其中pid为screen进程号
screen -ls 列出现有screen会话列表
screen -r pid 恢复到某个screen会话
Ctrl+a +d 保留会话离开当前窗口