Scrapy入门到放弃07:API方式启动、停止、监控爬虫
前言
在我们以往开发的爬虫中,不论是Java的Jsoup,还是Python的requests,启动方式和普通的应用程序没什么两样,都是通过命令来本机运行。
但Scrapy提供了远程启停爬虫的服务Scrapyd。Scrapyd基于http协议开放了API,以此来远程启停爬虫。
而第三方插件Gerapy作为一个分布式爬虫管理框架,基于Scrapyd又封装了一个web应用,在网页上就可以启停爬虫程序,监控程序日志。
Scrapyd
1.安装
命令两行,快速安装。
python install scrapyd python install scrapyd-client复制代码
2. scrapyd配置
在python的site-packages/scrapyd安装目录下,有一个default-scrapyd.conf配置文件,里面是scrapyd的默认配置,我们可以修改一些默认配置。
这里主要还是修改IP和端口。
bind_address:默认是本地127.0.0.1,修改为0.0.0.0,可以让外网访问 http_port:服务端口,默认是6800复制代码
3.项目配置
在每个Scrapy项目下,都有一个scrapy.cfg,添加以下配置。
[deploy:video] url = http://localhost:6800/ # 这个project名称你随便起 project = VideoSpider复制代码
其中要注意以下两点:
video为deploy的别名,冒号之间千万不要有空格,别问,问就是加空格是我的编码风格
url端口要与scprayd.conf中一致
4. 启动服务
在主机上新建一个目录,执行scrapyd,这里注意,一定要新建目录,因为目录中会生成一些数据文件。
如果是linux环境,记得要创建软链接。
ln -s /usr/local/python3.9/bin/scrapyd /usr/local/bin/scrapyd ln -s /usr/local/python3.9/bin/scrapyd-client /usr/local/bin/scrapyd-client ln -s /usr/local/python3.9/bin/scrapyd-deploy /usr/local/bin/scrapyd-deploy复制代码
操作如下图:
5.部署服务
我们需要进入到scrapy项目的目录下,执行deploy命令。将项目中的爬虫部署到scrapyd服务上去。
scrapyd-deploy video -p VideoSpider复制代码
响应结果为200时,表示部署成功。
同时,scrapyd-deploy -l 命令可以查看部署了哪些项目。
6.API
前面也说了,scrapyd是一个通过API来操作爬虫的服务框架。这里先列举一比较常用的API。
1. http://localhost:6800/daemonstatus.json:查看集群负载,返回{ status, running, pending,finished, node_name }的json 2. http://localhost:6800/schedule.json -d project=myproject -d spider=SpiderName [ -d setting = DOWNLOAD_DELAY = 2 -d arg1 = val1]:运行爬虫, 3. http://localhost:6800/cancel.json -d project=myproject -d job=jobid:停止爬虫 4. http://localhost:6800/listjobs.json | listspiders.json?project=myproject:查看项目的任务|爬虫列表 5. curl http://localhost:6800/delproject.json -d project=myproject:删除项目复制代码
操作截图如下:
这里要注意的是,里面的myproject要换成自己的项目名称,这里我需要换成VideoSpider。
这样的API的操作方式,对于很多人来说太不友好了,所以为了解决这个问题,Gerapy基于scrapyd服务,提供了界面化的操作方式。这个就下一篇来讲。
作者:叫我阿柒啊
链接:https://juejin.cn/post/7029231403950669832