scrapy抓取拉勾网职位信息(八)——使用scrapyd对爬虫进行部署

上篇咱们实现了分布式爬取,本篇来讲下爬虫的部署。html


 

分析:咱们上节实现的分布式爬虫,须要把爬虫打包,上传到每一个远程主机,而后解压后执行爬虫程序。这样作运行爬虫也能够,只不过若是之后爬虫有修改,须要从新修改好代码后,从新打包上传而后执行(固然你愿意每台登上去后修改代码也行)。本篇咱们使用scrapd来进行部署。python


 

使用scrapyd来部署爬虫大致只须要几步:json

  1. 在须要运行爬虫的主机上安装scrapyd,而且启动scrapyd服务
  2. 使用scrapy-client把项目打包成egg文件,部署到scrapyd服务
  3. 使用scrapyd提供的网络API来对爬虫进行操做,包括启动爬虫、中止爬虫等操做。

 

1、安装相关的库

pip install scrapyd  (须要运行爬虫的主机都要安装)vim

pip install scrapyd-client (本机主机安装便可,做用是为了把爬虫项目部署到远程主机的scrapyd去)api

2、修改scrapyd配置文件

[root@kongqing /]# whereis scrapyd
scrapyd: /etc/scrapyd /root/.pyenv/shims/scrapyd
[root@kongqing /]# cd /etc/scrapyd
[root@kongqing scrapyd]# ls
scrapyd.conf
[root@kongqing scrapyd]# vim scrapyd.conf

bind_address=0.0.0.0 #修改成0.0.0.0可使用其余任意主机进行链接

3、启动scrapyd,直接命令行输入scrapyd(这样就启动了一个网络的监听,端口默认是6800)

4、使用本机浏览器打开47.98.xx.xx:6800  (前面换成本身安装好scrapyd的远程主机IP地址)


 

解释一波:浏览器

  • jobs表明的就是爬虫项目
  • logs表明的是日志文件,也就是你爬虫运行时显示的那些信息
  • Documentation这个指的scrapyd的文档,教你对爬虫项目进行启停等操做的

固然,目前里面尚未项目,因此jobs、logs里面都是空的。服务器


 

5、修改本地爬虫文件scrapy.cfg文件(前面解释过,这个文件是用来作爬虫部署用的)

[settings]
default = lagou.settings  

[deploy]
#url = http://localhost:6800/  #本地的直接能运行,我就不改了
project = lagou

[deploy:aliyun]  #:后面是别名,本身设置,用来识别部署的是哪台设备,避免弄混
url = http://47.98.xx.xx:6800/ #远程主机的地址及端口
project = lagou

6、使用scrapyd_client将项目部署到远程主机

  • 在scrapy.cfg文件所在目录打开cmd命令行,(地址栏输入cmd,或者shift+右键打开)

  •  执行部署命令scrapyd-deploy aliyun --version 201812010050 

 


 

解释一波:网络

  • 若是只输入命令scrapyd-deploy就是直接部署本机了,由于本机没有跟别名
  • aliyun表明的是个人远程主机,也就是scrapy.cfg文件中的[deploy:aliyun]这部分。建议你们加别名,方便识别管理。
  • --version是可选的,表明一个版本,后面的数字我是使用的当前时间,本身能够根据须要设置。默认是时间戳,也就是不使用--version它也会默认给你生成一个版本信息。

 

  • 能够看到,成功执行部署命令后,本地项目目录多了两个文件夹

7、使用scrapyd网络API启停爬虫

打开API文档看一下,咱们能够看到有如下这些方法:curl

这里只解释两个用法,其余的本身看文档。scrapy

shedule.json:运行一个爬虫(会返回一个jobid),文档示例用法以下:

$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider

cancel.json:中止一个爬虫(须要有jobid),文档示例用法以下:

$ curl http://localhost:6800/cancel.json -d project=myproject -d job=6487ec79947edab326d6db28a2d86511e8247444

 

如今咱们启动咱们本身在远程主机上的爬虫项目。

  • 首先执行如下代码:
curl http://47.98.xx.xx:6800/schedule.json -d project=lagou -d spider=lagou_c   #修改成本身的远程主机IP,项目名是lagou,spider名字是lagou_c
  • 咱们用浏览器打开47.98.xx.xx:6800看下jobs,能够看到有一个爬虫在运行了

  • 注意到那个蓝色的Log了么,爬虫的调试信息都在这里,咱们点击就能够看到爬虫运行时的信息了

  • 如今咱们中止这个爬虫,使用命令
curl http://47.98.xx:xx/cancel.json -d project=lagou -d job=1aae6d70f51f11e8983600163e0403c8 (须要修改成本身的远程主机IP,项目名称,job就是以前运行时候的jobid
  • 咱们如今再到网页里看一下,显示刚刚那个爬虫已经中止了:

 

这样咱们使用scrapyd就完成了爬虫部署到远程服务器的过程,若是你以为使用网络API调用的方式不习惯的话,也能够用scrapyd_api来调用,不过须要生成egg文件,地址在这里,有兴趣的能够尝试。

相关文章
相关标签/搜索