【编号0003】Scrapy配套的部署工具和部署概念学习

在一个Scrapy爬虫项目写好之后,启动和查看日志还不算麻烦,但是如果你的爬虫多,且启动方式及时间,比较有要求,那脚本管理,会非常的麻烦,有没有什么简单且方便的管理和部署工具呢?

答案当然是有的,且这类工具还是比较多的,在此,本篇文章,就是针对于Scrapy项目的部署方式和工具,进行介绍

1. scrapy项目的cfg文件

在介绍正式部署前,首先了解下Scrapy的部署内容

首先,一个完整的Scrapy项目,里面必须含有cfg后缀文件,和所需的py文件,以及spider目录下的爬虫文件,还有可能包含一些自定义的python包和工具函数。

下图是一个最基础的爬虫项目的目录结构图【工具是Pycharm】:

1.png

其中,除了cfg文件之外,其他的py文件,都是给爬虫运行用的,都和部署没什么关系。那顺便来看下cfg文件的内容:

2.png

在这里面,有两个,第一个是settings,是指定项目中的配置文件;第二个是deploy,是部署用的,不过默认的url,被注释了,因为这是命令行部署用的,不太推荐

2. Scrapy配套的部署工具库

本篇文章的目的是部署和管理,但是部署的操作还是要学的,因为这是基础。

为了方便的管理scrapy项目中爬虫的运行,scrapy框架有配套的部署工具,那就是scrapyd【注意,多了一个d】

这个scrapyd框架,负责运行scrapyd项目,并且会记录日志。他的主要功能有:

  • 接收scrapy项目
  • 查看scrapy项目爬虫
  • 启动scrapy爬虫
  • 查看运行中的scrapy
  • 查看运行结束的scrapy

功能够多吧,且说实话,都非常实用。但是呢,操作比较蛋疼,虽然scrapyd提供web界面,但是只能看,不能管理,管理需要命令行,那这就.....不免让大佬们心痒,纷纷推出了各自的Web管理工具,下文介绍。

那这里呢,来说下scrapy、scrapyd之间的耦合,以及其他的第三方库。

所需库的安装【未展示scrapy的安装,因为这里介绍部署,默认你了解了scrapy的开发】:

  • pip install scrapyd【运行scrapy的容器】
  • pip install scrapyd-client【用于打包scrapy项目到scrapyd中】

这里涉及到scrapyd和scrapyd-client两个库,前者是服务型,用于跑scrapy爬虫的;后者是工具函数,用于打包scrapy文件的;

3. Scrapyd-client介绍

在scrapyd-client安装好之后呢,就有scrapy-deploy这个命令,但是你未必可以直接使用,可能会出现如下效果图:

3.png

问:不是已经安装了scrapyd-client,为什么系统无法识别呢?这个是什么原因导致的呢?

答:是因为呀,在scrapyd-client安装的时候,提供了scrapyd-deploy的py文件,但是没有后缀,所以系统不能直接识别

问:那怎么处理呢?

答:这个文件的路径呢,是在你的Python安装位置的Scripts目录下,你需要在这里面,创建一个名为scrapyd-deploy.bat的文件,内容是:

@echo off
C:/Users/kelly/Anaconda3/python.exe C:/Users/kelly/Anaconda3/Scripts/Scrapyd-deploy

Tips:

  • @echo off关闭具体执行命令输出的意思,如果你是win系统,可以去掉,对比看看
  • 这里面的路径,是我电脑上的Python路径,需要改成你的Python路径
  • bat是win系统可直接执行的文件,如果你的系统是Linux或Macos,需要写sh或可执行文件;

这个文件添加好之后,重开一个CMD【终端】,测试效果,如下截图:

4.png

这个截图说明命令行正常工作了,但是当前的桌面目录,不是一个有效的scrapy项目,即不在scrapy项目内

那工具的安装和测试,一切正常了,下面开始学习下scrapyd的作用

4. Scrapyd介绍

简单来描述下,scrapy是一个项目,scrapyd是管理scrapy正常运行的容器,可以停止、启动、查看状态,当然,这些都是命令行启动【这是最大的缺陷】

当然scrapyd也是可以配置的,配置文件在scrapyd库里面,如下图:

5.png

打开它,内容是这样的,#后面是添加的注释:

[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 4 #同时运行的最大进程数 = 4*核心数
finished_to_keep = 100
poll_interval = 5.0
bind_address = 127.0.0.1   #本机用 127.0.0.1,外网访问改成 0.0.0.0
http_port   = 6800  #默认端口,可以改,或者多开
debug       = off   #调试模式,默认关闭
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root

[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

上面都是默认配置,通常改了端口或者绑定的IP,其余的都不用怎么修改。

修改好之后,打开CMD,进入到桌面上,然后执行scrapyd命令,服务就启动了,如下图:

6.png

在日志中,有个127.0.0.1:6800的连接,使用浏览器打开,有对应的页面,如下图:

7.png

这就是正常的页面了

嗯,没错,虽然丑,但也是他,就是他

好了,都正常了,那要怎么使用了?在这个界面上,有个curl http://localhost:6800/schedule.json -d project=default -d spider=somespider命令,没错,这就是驱使scrapyd工作的命令

挺崩溃的,虽然可以管理爬虫,但是命令管理,难免让人心烦.......有界面有按钮的才是管理,这个是折磨

别急,界面管理,下次分享,这次先打基础,熟悉下而已

5. 学习使用命令部署爬虫

在一切的开始前,我们需要先处理个东西,就是cfg文件,前面介绍过这是项目部署用的,现在在他里面改动一个内容,如下:

8.png

去掉之后,这部署,才会有目标地址

于此同时,scrapyd也需要打开,且url指定的地址,就可以访问到scrapyd容器服务

然后在spbeen的项目目录内,打开终端,输入命令scrapyd-deploy --build-egg spbeen.egg 效果图如下:

9.png

图中有Server response(200)的字样,说明爬虫已经部署上去了

那,要怎么看scrapyd的状态呢?就那个丑的要死的界面,是没办法管理的

当然是命令行控制了,再坚持一下,马上就要学完了

6. 命令行调度

1、查看scrapyd目前的状态:

命令行:curl http://localhost:6800/daemonstatus.json

返回结果:{"node_name": "v-win10", "status": "ok", "pending": 0, "running": 0, "finished": 0}

2、列出Scrapyd中的项目

命令行:curl http://localhost:6800/listprojects.json

返回值:{"node_name": "v-win10", "status": "ok", "projects": ["spbeen"]}

3、查看项目中的爬虫

命令行:curl http://localhost:6800/listspiders.json?project=spbeen

返回值:{"node_name": "v-win10", "status": "ok", "spiders": ["sp"]}

4、启动爬虫

命令行:curl http://localhost:6800/schedule.json -d project=spbeen -d spider=sp

返回值:{"node_name": "v-win10", "status": "ok", "jobid": "5514a540ad6811e98d0bd8c497f4e6f4"}

以上四个命令的配图:


10.png

5、Scrapyd网页界面的爬虫执行记录和日志截图

11.png

Scrapyd支持的命令行很多,贴个官方的API文档链接:Scrapy官方连接


以上就是本篇文章的全部介绍内容了


!放在最后

如果文章中有什么错误或者建议修改的地方,欢迎留言纠正和回复

如果你喜欢本篇文章,不妨关注一下我们的公众号,每周更新两篇原创技术文档,都是干货

wxgzh1.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容