博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scrapy-redis(七):部署scrapy
阅读量:6599 次
发布时间:2019-06-24

本文共 3693 字,大约阅读时间需要 12 分钟。

一般我们写好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    = eggslogs_dir    = logsitems_dir   =jobs_to_keep = 5dbs_dir     = dbsmax_proc    = 0max_proc_per_cpu = 4finished_to_keep = 100poll_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 
-p
  • 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=myspidercurl http://b服务器scrapyd的ip:port/schedule.json -d project=A -d spider=myspidercurl 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,可以节省重复性的工作。

你可能感兴趣的文章
centos 升级php、mysql(webtatic)
查看>>
Java并发编程:Lock
查看>>
中文文本分类器训练集
查看>>
java进程间通信
查看>>
oracle服务器和客户端字符集的查看和修改
查看>>
顶级的JavaScript框架、库、工具及其使用
查看>>
分享Kali Linux 2016.2第49周镜像文件
查看>>
AYUI -AYUI风格的 超美 百度网盘8.0
查看>>
linux下php中文UTF-8转换Unicode方法和注意事项
查看>>
TensorFlow:tf.contrib.layers.xavier_initializer
查看>>
快开学了,又被逼死一个!!现教育部已经成为催命阎王!!, 转自中华网
查看>>
简明 Python 教程
查看>>
Photoshop操作指南
查看>>
用MPMoviePlayerController做在线音乐播放
查看>>
ASP.NET调用cmd命令提示符拒绝访问解决方案
查看>>
Leetcode: Construct Binary Tree from Preorder and Inorder Transversal
查看>>
嵌入式开发之字符叠加---gb2313 国标码,utf8 国际码,unicode 无码
查看>>
Java查找算法——二分查找
查看>>
数据在千万级别上进行全文检索有哪些技术?强大的大数据全文索引解决方案-ClouderaSearch...
查看>>
E. Dreamoon and Strings(Codeforces Round #272)
查看>>