爬虫(十八):scrapy分布式部署

scrapy部署神器-scrapyd --》GitHub地址  --》官方文档python

 

一:安装scrapydlinux

安装:pip3 install scrapydgit

这里我在另一台ubuntu linux虚拟机中一样安装scrapy以及scrapyd等包,保证所要运行的爬虫须要的包都完成安装.github

在这里有个小问题须要注意,默认scrapyd启动是经过scrapyd就能够直接启动,这里bind绑定的ip地址是127.0.0.1端口是:6800,这里为了其余虚拟机访问讲ip地址设置为0.0.0.0
修改scrapyd的配置文件:sudo vim /usr/local/lib/python3.5/dist-packages/scrapyd/default_scrapyd.confjson

 

这样配置好以后就能够在windows下访问了ubuntu

 二:关于部署vim

经过scrapyd-client进行部署操做:--》官方文档windows

这里的scrapyd-client主要实现如下内容:api

  1. 把咱们本地代码打包生成egg文件
  2. 根据咱们配置的url上传到远程服务器上

咱们将咱们本地的scrapy项目中scrapy.cfg配置文件进行配置:服务器

咱们其实还能够设置用户名和密码,不过这里没什么必要,只设置了url
这里设置url必定要注意:url = http://192.168.27.128:6800/addversion.json
最后的addversion.json不能少

咱们在本地安装pip3 install scrapyd_client,安装完成后执行:scrapyd-deploy(我是在git下执行的) 先从github下载项目

看到status:200表示已经成功看到status:200表示已经成功

 三:经常使用API

listprojects.json列出上传的项目列表

listversions.json列出有某个上传项目的版本

schedule.json远程任务的启动

下面咱们启动的三次就表示咱们启动了三个任务,也就是三个调度任务来运行zhihu这个爬虫

 启动后就能够在界面中看到启动的任务了:

也能够看到日志:

MongoDB中存入了刚才爬取的数据。

listjobs.json列出全部的jobs任务
上面是经过页面显示全部的任务,这里是经过命令获取结果

cancel.json取消全部运行的任务
这里能够将上面启动的全部jobs均可以取消:

这样当咱们再次经过页面查看,就能够看到全部的任务都是finshed状态:

我相信看了上面这几个方法你必定会以为真不方便还须要输入那么长,因此有人替你干了件好事把这些API进行的再次封装:

--》GitHub地址

四:关于python-scrapyd-api

该模块可让咱们直接在python代码中进行上述那些api的操做
首先先安装该模块:pip install python-scrapyd-api 
使用方法以下,这里只演示了简单的例子,其余方法其实使用很简单按照规则写就行:

复制代码
from scrapyd_api import ScrapydAPI


scrapyd = ScrapydAPI('http://192.168.1.9:6800')
res = scrapyd.list_projects()
res2 = scrapyd.list_jobs('zhihu_user')
print(res)
print(res2)
复制代码

Cancel a scheduled job
scrapyd.cancel('project_name', '14a6599ef67111e38a0e080027880ca6')

Delete a project and all sibling versions
scrapyd.delete_project('project_name')

Delete a version of a project
scrapyd.delete_version('project_name', 'version_name')

Request status of a job
scrapyd.job_status('project_name', '14a6599ef67111e38a0e080027880ca6')

List all jobs registered
scrapyd.list_jobs('project_name')

List all projects registered
scrapyd.list_projects()

List all spiders available to a given project
scrapyd.list_spiders('project_name')

List all versions registered to a given project
scrapyd.list_versions('project_name')

Schedule a job to run with a specific spider
scrapyd.schedule('project_name', 'spider_name')

Schedule a job to run while passing override settings
settings = {'DOWNLOAD_DELAY': 2}

Schedule a job to run while passing extra attributes to spider initialisationscrapyd.schedule('project_name', 'spider_name', extra_attribute='value')

相关文章
相关标签/搜索