Scrapy-----scrapyd可视化管理

安装相关库

1.Scrapyd-clent安装
2.scrawpyd安装

理解scrapyd

scrapyd其实就是一个服务器端,真正在部署爬虫的时候,我们需要两个东西:

1. scrapyd (安装在服务器端)
2.scrapy-client (客户端)

在项目目录下,输入scrapyd即可运行,默认地址为http://localhost:6800

scrapyd

修改默认配置信息可以在项目下新建一个scrapyd.conf或者在scrapy.cfg中增加[scrapyd]:

[scrapyd]
# 网页和Json服务监听的IP地址,默认为127.0.0.1
bind_address = 127.0.0.1
# 监听的端口,默认为6800
http_port   = 6800
# 是否打开debug模式,默认为off
debug       = off
# 每个CPU可启用的Scrapy 进程数,默认为4
max_proc_per_cpu = 4
# 可启用的最多进程数,默认为0.如果未设置或者设为0,则使用的最多进程数=CPU数量*max_proc_per_cpu
max_proc = 0
# 项目eggs生成目录,默认为项目目录下eggs
eggs_dir    = eggs
# 项目日志生成目录,默认为项目目录下logs,如果不想要生成日志,可以直接设置成空
logs_dir    = logs
items_dir   =
# 项目dbs生成目录,默认为项目目录下dbs
dbs_dir     = dbs
# 爬取的items存储的文件夹(版本0.15.以上),默认为空,不存储。
items_dir =
# 每个爬虫保持的完成任务数,默认为5.(版本0.15.以上,以前版本中为logs_to_keep)
jobs_to_keep = 5
# 保持的完成任务进程数。默认为100.(版本0.14.以上)
finished_to_keep = 100
# 轮训请求队列的时间间隔。默认为5s,可以为浮点数
poll_interval = 5.0
# 启动子进程的模块。可以使用自定义
runner      = scrapyd.runner
# 返回可用于twisted的application,可继承于Scrapyd添加和移除自己的组件和服务。 https://twistedmatrix.com/documents/current/core/howto/application.html查看更多
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
# twisted的web资源,表示到scrapyd的接口。Scrapyd包含一个带有网站的界面,可以提供对应用程序的web资源的简单监视和访问。此设置必须提供twisted web资源的根类。
webroot     = scrapyd.website.Root

部署scrapy项目

部署主要分为两步:

  1. 将项目打包成egg
  2. 将egg通过Scrapyd的addversion.json接口上传到目标服务器

官方的部署上传接口文档:https://scrapyd.readthedocs.io/en/latest/api.html#addversion-json

推荐使用Scrapyd-client中的scrapyd-deploy一步上传,关于Scrapyd-client介绍:
https://github.com/scrapy/scrapyd-client划重点:打包上传一步到位。
在scrapy项目目录下,有一个scrapy.cfg的配置文件:
在这里插入图片描述

1.编辑文件
[settings]
default = ThreatIntellgence.settings   #ThreatIntellgence为爬虫名

[deploy:MyspiderWEB]
url = http://localhost:6800/
project = ThreatIntellgence

执行scrapyd-deploy,这个命令在windows下是运行不了的,(在mac和linux下都是可以的)因为在我们安装的根目录D:\python\Scripts中可以查看这个文件是没有后缀名的:scrapyd-deploy.bat
这也是为什么安装scrapyd后运行不了的原因。
https://editor.csdn.net/md/?articleId=105299074

2. 然后,进入到我们爬虫的根目录,运行scrapyd-deploy:

注意:一定要进入爬虫根目录,就是带有scrapy.cfg的那一层及目录。
接着:
运行:
scrapyd-deploy 爬虫WEB名称 -p 爬虫项目名称

scrapyd-deploy MyspiderWEB -p ThreatIntellgence

出现报错:
D:\python\Scripts\scrapyd-deploy:23: ScrapyDeprecationWarning: Module scrapy.utils.http is deprecated, Please import from w3lib.http instead.
from scrapy.utils.http import basic_auth_header
Unknown target: MyspiderWEB
报错说明,由于底层scrapyd-deploy的模块‘scrapy.utils.http’已经弃用,建议更新为w3lib.http替代
解决办法其实很简单,进入D:\python\Scripts\scrapyd-deploy:23: (就是找到自己的python安装地址,报错中已经提示了加粗的位置)
在这里插入图片描述
再重新执行scrapyd-deploy MyspiderWEB -p ThreatIntellgence
可能出现报错:
在这里插入图片描述
这是因为我们没有启动Scrapyd,需要先在项目目录下运行scrapyd启动项目。然后重新开启cmd,到达项目位置,再重新执行scrapyd-deploy MyspiderWEB -p ThreatIntellgence

因为上边我们已经配置过scrapy.cfg文件了,这里直接使用配置完的参数即可:
在这里插入图片描述
我们部署成功后,可以查看刚才执行启动scrapyd服务端的当先目录下有两个文件夹:
在这里插入图片描述
到这一步,只是把爬虫项目上传到服务端,并没有启动,

3.接下来进行启动:

先运行命令查看服务端状态:

curl http://localhost:6800/daemonstatus.json

返回的信息告诉我们:都为0
再执行启动命令:
curl http://localhost:6800/schedule.json -d project=ThreatIntellgence -d spider=anti
然后查看网页127.0.0.1:6800
在这里插入图片描述

相关API使用

https://scrapyd.readthedocs.io/en/latest/api.html
这里使用的是postman访问,如果需要的朋友可以去Google应用程序中添加,以前版本的扩展程序被移到了Google应用中,或者可以去它的官网下载客户端。
在这里插入图片描述

  • 1.查看服务进程状态

GET http://127.0.0.1:6800/daemonstatus.json

可查看当前的运行状态:将要执行的任务数、运行中的任务数、已经结束的任务数。如我用postman请求返回的结果

  • 2.项目发布版本

推荐使用上面的scrapyd-deploy发布。

POST http://127.0.0.1:6800/addversion.json

参数:

project(string, required),项目名称;
version(string, required),项目版本;
egg (file, required),打包的项目文件。
$ curl http://localhost:6800/addversion.json -F project=myproject -F version=r23 -F egg=@myproject.egg
  • 3.调度爬虫

调度爬虫的运行,返回任务id。

POST http://127.0.0.1:6800/schedule.json

参数:

project (string, required),项目名称。
spider (string, required),爬虫名称,即 Spider下的name属性指定的。即scrapy crawl [爬虫名称]运行时的名称。
setting (string, optional),运行时的设置文件,默认为项目下settings.py。
jobid (string, optional),任务id,不指定则为默认生成的UUID。
_version (string, optional),运行的项目的版本。
任何其他的参数都被传递给爬虫的属性,即scrapy crawl [爬虫名称] -a accounts=testAdmin后面-a所带的参数,在Spider中可通过self.testAdmin来获取值。

通过postman访问,如下,返回的jobid可用于查看任务状态,取消任务。

  • 4.取消任务

利用调度运行时返回的jobid来取消。

POST http://localhost:6800/cancel.json

参数:

project (string, required),项目名称。
job (string, required),任务id。
  • 5.获取上传的项目

Scrapyd可管理多个Scrapy项目,可通过此方法获取上传的项目。

GET http://127.0.0.1:6800/listprojects.json
  • 6.获取项目的版本

返回上传的项目的版本列表,最后一个为当前版本。

GET http://127.0.0.1:6800/listversions.json

参数:

project (string, required),项目名称。
  • 7.获取任务列表(Scrapyd 0.15版本以上)

获取指定项目的将要执行的、正在运行的、已经结束的任务

GET http://127.0.0.1:6800/listjobs.json

参数:

project (string, required),项目名称。
  • 8.获取项目的爬虫列表

返回指定版本,如不指定则为最新版本的可用爬虫列表。

GET http://127.0.0.1:6800/listspiders.json

参数:

project (string, required),项目名称。
_version (string, optional),运行的项目的版本。
  • 9.获取任务列表(Scrapyd 0.15版本以上)

获取指定项目的将要执行的、正在运行的、已经结束的任务

GET http://127.0.0.1:6800/listjobs.json

参数:

project (string, required),项目名称。
  • 10.删除项目版本

删除指定项目的指定版本,注意:当项目没有其他版本可以使用时,项目也会被删除。

POST http://127.0.0.1:6800/delversion.json

参数:

project (string, required) 项目名称。
version (string, required) 要删除项目的版本
  • 11.删除项目

删除一个项目及所有上传的版本。

POST http://127.0.0.1:6800/delproject.json

参数:

project (string, required) 项目名称。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值