阅读 126

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的默认配置,我们可以修改一些默认配置。

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复制代码

其中要注意以下两点:

  1. video为deploy的别名,冒号之间千万不要有空格,别问,问就是加空格是我的编码风格

  2. 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:删除项目复制代码

操作截图如下:

API

这里要注意的是,里面的myproject要换成自己的项目名称,这里我需要换成VideoSpider。

这样的API的操作方式,对于很多人来说太不友好了,所以为了解决这个问题,Gerapy基于scrapyd服务,提供了界面化的操作方式。这个就下一篇来讲。


作者:叫我阿柒啊
链接:https://juejin.cn/post/7029231403950669832


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐