大数据 爬虫Python AI SqlSpbeen——Python技术栈

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

2019-07-24  本文已影响0人  布拉豆

在一个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项目,并且会记录日志。他的主要功能有:

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

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

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

这里涉及到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:

这个文件添加好之后,重开一个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
上一篇下一篇

猜你喜欢

热点阅读