scrapy-redis(七):部署scrapy

一般我们写好scrapy爬虫,如果需要启动的话,需要进入scrapy项目的根目录,然后运行以下命令:

scrapy crawl {spidername}

这样我们就可以在终端查看到爬虫信息了。但爬虫运行状态还需要给上级领导看,或者自己有空的时候就看看,总不可能想看的时候就登录服务器。

下面就给大家介绍scrapy官方推荐的部署爬虫项目的方法。 
需要安装scrapyd和scrapyd-client

对于scrapyd的安装,极力建议大家不要使用pip安装,而是直接从github去下载,然后使用setup安装。而对于scrapyd-client的安装,可以直接使用pip下载安装。

配置scrapyd 
下载完scrapyd之后,就需要进行配置。我这里使用的ubuntu 14.04。按照scrapyd文档介绍,我们需要建立一个文件,绝对路径为/etc/scrapyd/scrapyd.conf。然后在文件内加入以下内容:

[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5.0
bind_address = 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

上面这个是scrapyd上的默认配置文件,可以进行自定义的改动。具体请参考官方文档。我前面说过不要使用pip安装scrapyd,因为pypi上的scrapyd版本较低,在webservice这个模块中是没有DaemonStatus这个类的,所以就会报错。

弄完配置文件,就可以直接在终端输入sudo scrapyd。这样就启动了这个服务。记住这是个服务器,我们需要用scrapyd-client将爬虫部署到scrapyd中。你会在终端看到下面的界面: 

scrapyd-client 
这一步非常的简单,安装完scrapyd-client之后,直接进入爬虫所在的根目录,打开scrapy.cfg文件。添加以下内容:

[deploy]
url = http://127.0.0.1:6800/
project = myspider
username = {name}
password = {passwd}
  • 1
  • 2
  • 3
  • 4
  • 5

然后在终端运行

scrapyd-deploy <target> -p <project>
  • 1

 
部署成功会看到上面的输出

然后就会在根目录生成一堆文件。 

启动scrapy

curl http://127.0.0.1:6800/schedule.json -d project=myspider -d spider=myspider

根据scrapyd的api,利用上面的命令即可启动一个爬虫。

取消一个爬虫:

curl http://127.0.0.1:6800/cancel.json -d project=myspider -d job=566dba0ccc0711e6b95c000c294834b5

更多的api接口请参考scrapyd官方文档。

浏览器中观察爬虫日志 
假设我们scrapyd服务运行的ip和port为192.168.1.1:6800。那么我们就可以打开浏览器,查看爬虫的抓取log. 

在浏览器中输入192.168.1.1:6800即可看到上面的页面。点击jobs,即可查看当前运行的爬虫,点击log,就可以查看当前爬虫以及过去爬虫的所有log。

 
上面是爬虫的job,显示已经完成了三个,有一个正在运行

 
上面是log,点击进去有详细的信息


这是一个正在运行的爬虫的log

总结 
至此,我们就全部部署好了一个爬虫。比如我们平常使用的是windows,只要我们在windows上安装了curl,那么我们就可以以命令行的方式启动停止部署在linux上的爬虫,只要确保scrapyd这个服务在运行即可。

举一个例子: 
假设我们在测试环境,利用scrapy开发了5个爬虫,分别对应5个不同的网站,比如,A网站,B网站,C网站,D网站,E网站。然后我们有5台服务器,分别是a,b,c,d,e,我们需要把这5个爬虫分别部署到5台服务器上,当然,前提是需要在5台服务器上安装了scrapyd。 
那么,我们就可以利用scrapyd-client进行快速的部署。只要在这个5个不同的爬虫根目录的scrapy.cfg文件中加入下面这一段就可以了:

[deploy:local]
url = http://127.0.0.1:6800/
project = myspider
username = {name}
password = {passwd}

[deploy:a]
url = #服务器a中scrapyd监听的ip和端口
project = myspider
username = {name}
password = {passwd}

[deploy:b]
url = #服务器b中scrapyd监听的ip和端口
project = myspider
username = {name}
password = {passwd}

[deploy:c]
url = #服务器c中scrapyd监听的ip和端口
project = myspider
username = {name}
password = {passwd}

[deploy:d]
url = #服务器d中scrapyd监听的ip和端口
project = myspider
username = {name}
password = {passwd}

[deploy:e]
url = #服务器e中scrapyd监听的ip和端口
project = myspider
username = {name}
password = {passwd}

然后我们在scrapy项目的根目录,执行scrapyd-deploy就可以把爬虫部署到不同的服务器中了。有多少个单独的爬虫,就执行多少次。

运行爬虫的话,我们只要利用curl命令就可以,假设我们想要启动a,b,c,d,e这5台服务器中的A网站的爬虫:

curl http://a服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
curl http://b服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
curl http://c服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
curl http://d服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider
curl http://e服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspider

上面的命令执行5次就可以了。

当然,我们可以写一个python脚本,利用subprocess,可以节省重复性的工作。

原文地址:https://www.cnblogs.com/zxtceq/p/8985658.html

时间: 2024-10-15 11:44:23

scrapy-redis(七):部署scrapy的相关文章

五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目

scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 pip3 install scrapyd 首先安装scrapyd模块,安装后在Python的安装目录下的Scripts文件夹里会生成scrapyd.exe启动文件,如果这个文件存在说明安装成功,我们就可以执行命令了 启动scrapyd服务 在命令输入:scrapyd 如图说明启动成功,关闭或者退出命令窗口,因为我们正真的使用是

scrapy基础知识之 Scrapy 和 scrapy-redis的区别:

Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件). pip install scrapy-redis Scrapy-redis提供了下面四种组件(components):(四种组件意味着这四个模块都要做相应的修改) Scheduler Duplication Filter Item Pipeline Base Spider sc

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令

redis服务部署及配置详解

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为"全

linux+php5.4+nginx+支持redis安装部署

系统环境 [[email protected]~]# cat /etc/redhat-release CentOSrelease 6.5 (Final) [[email protected]~]# uname -a Linuxlocalhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013x86_64 x86_64 x86_64 GNU/Linux php5.4 yum源 rpm -Uvhhttp://

Linux Redis安装部署操作指南(一)

一.Redis安装部署 1.1.环境介绍 系统环境:Red HatEnterprise Linux Server release 6.2 (Santiago) 内核版本:Linux zxt-02.com2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux 软件版本:redis-3.0.5 主机名:zxt-1.com 主机IP:192.168.1.108 安装所需软件环境: 1.

Redis分布式部署,一致性hash

一致性哈希 由于hash算法结果一般为unsigned int型,因此对于hash函数的结果应该均匀分布在[0,2^32-1]区间,如果我们把一个圆环用2^32 个点来进行均匀切割,首先按照hash(key)函数算出服务器(节点)的哈希值, 并将其分布到0-2^32的圆环上.用同样的hash(key)函数求出需要存储数据的键的哈希值,并映射到圆环上.然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器(节点)上.如图所示: key1.key2.key3和server1.serve

Redis的部署使用文档

Redis的部署使用文档 简述: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符 串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富 的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区 别的是redis会周期性的把更新的数据写入磁

Scrapy基础一 ------学习Scrapy之前所要了解的

技术选型: Scrapy vs requsts+beautifulsoup    1,reqests,beautifulsoup都是库,Scrapy是框架    2,Scrapy中可以加入requests beautifulsoup    3,Scrapy基于twisted,异步IO框架,性能最大的优势    4,Scrapy 扩展方便,提供了许多内置功能    5,内置css和xpath selector(都是c写的)非常方便,beautifulsoup(是纯python写的缺点就是慢) 网页

【转】linux平台Redis安装部署

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务 器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”).