scrapyd用来方便控制scrapy爬虫

版权声明:如需转载请联系本人[email protected] https://blog.csdn.net/u012491646/article/details/81076643

python#使用scrapyd服务的方法与步骤

什么是scrapyd

scrapyd = scrapy + deploying
把scrapy程序发布到上面的一套由python写好的服务

Scrapyd is an application for deploying and running Scrapy spiders. 
It enables you to deploy (upload) your projects and control their spiders 
using a JSON API.

言外之意: scrapyd是一种服务,它能跟scrapy开发的爬虫程序配套使用的,其可以
通过发布scrapy程序并通过一套post/get请求指令(查看)来控制发布到
scrapyd服务上的scrapy程序。

步骤

1. 准备工作 前期准备1

  a) 安装scrapyd

安装好scrapyd,先开启服务,

#安装好scrapyd
$ pip install scrapyd
#开启服务 默认都不需要加载
$ scrapyd

scapyd生成文件
    最后一步在所在的当前指令目录中会出现空dbs、eggs、logs文件,顾名思义这三个文件是
后期部署scrapy爬虫项目的管理以及记录日志的地方,所以初步可以看到scrapyd是一个
容器,或者更准确点就是需要在后台开起来的服务,以下本人称scrapydscrapyd服务
区分scrapy项目

  b) 安装scrapyd-client

    这是一个部署scrapyscrapyd服务中的工具,

$ pip install scrapyd-client

    该安装包拥有scrapyd-deploy 命令,是爬虫项目发布到srcapyd服务的关键步骤,使用的前提是
必须要开启scrapyd服务,也就是第一步a) 这一步window需要额外处理,linux不需要

2. 发布scrapy项目scrapyd服务 前期准备2

 a) 创建爬虫的通常命令
$ scrapy startproject sipdername

  进入爬虫的项目顶级目录(之后操作都在该级目录中),在指令所在目录下会自动创建爬虫项目模板,
同时会在顶层目录中生成一个scrapy.cfg配置,这个配置本来如果你不发布项目的话,基本上可以忽略。
该配置是发布爬虫项目到scrapyd服务的重要配置。

  b) 修改scrapy.cfg内容

    注释掉scrapy.cfg文件中的url(默认端口6800) 以及 [desploy:scrapyd部署项目名]
scrapy.cfg配置文件

 c) 查看服务以及项目是否正常
  • 1.查看是否可以发布到scrapyd服务
$ scrapyd-deploy -l 
正常情况下会显示部署在`scrapyd服务`上的爬虫项目,如果出错,最大的可能性就是没有开启`scrapyd
服务`,因为可以在任何目录中开启`scrapyd服务`,所以该指令是用来查找当前正在开启的`scrapyd服务`
的
  • 2.查看scrapy爬虫项目中的爬虫名
$ scrapy list 
正常情况下会列出当前你的爬虫项目,如果列不出来或者报错,你先看下是哪里语法有问题。

3. 正式发布项目

  以上2步骤都没有问题的话,就开始部署项目(部署这里不需要关注爬虫名)

$ scrapyd-deploy 部署项目名(cfg:中的部署项目名) -p 爬虫项目名

说明:
部署项目名: 是指配置中的项目名称看 2.b) 你自己设置的名称,是scrapyd识别不同部署项目的名称
项目名: 这个是scrapy生成的项目名,也就是你的顶级项目目录名称

部署成功之后会在scrapy项目中生成两个文件build和project.egg-info,分别是通过scrapyd-deploy
命令生成的编译文件以及一些项目配置信息

4.大功告成

通过ip地址:6800端口进入看服务,这里特别说明,一切运行都需要先开启scrapyd服务
    htt://ip地址:6800 访问

5.一些scrapyd控制爬虫的指令方法

可以通过 curl命令获取6800相关的api接口对爬虫进行远程操作,比如开启爬虫,停止爬虫等等
1)开启:项目名为爬虫的顶级项目名,非上面的部署名
curl http://ip地址:6800/schedule.json -d project=项目名 -d spider=爬虫名称
b)关闭,job可以通过6800看
curl http://ip地址:6800/cancel.json -d project=项目名 -d job=232424434
c)删除不要的项目,确保该项目没有运行的爬虫
curl http://ip地址:6800/delproject.json -d project=项目名
d)查看还有多少项目
curl http://ip地址:6800/listprojects.json

6.其他思考

以上可以看到通过curl命令就是获取接口命令的方法,那么我们很容易通过python中的
requests包来发送请求,来执行认为,这个方法可以集成到django这样的项目下做定时任务

1

猜你喜欢

转载自blog.csdn.net/u012491646/article/details/81076643