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,可以节省重复性的工作。
scrapy-redis(七):部署scrapy的更多相关文章
- 第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目 scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:h ...
- Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理
Scrapy是一个流行的爬虫框架,利用Scrapyd,可以将其部署在远程服务端运行,并通过命令对爬虫进行管理,而Gerapy为我们提供了精美的UI,可以在web页面上直接点击操作,管理部署在scrap ...
- 五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 pip3 install s ...
- Scrapy+redis实现分布式爬虫
概述 什么是分布式爬虫 需要搭建一个由n台电脑组成的机群,然后在每一台电脑中执行同一组程序,让其对同一网络资源进行联合且分布的数据爬取. 原生Scrapy无法实现分布式的原因 原生Scrapy中调度器 ...
- scrapy爬虫学习系列七:scrapy常见问题解决方案
1 常见错误 1.1 错误: ImportError: No module named win32api 官方参考:https://doc.scrapy.org/en/latest/faq.html# ...
- scrapy基础知识之 Scrapy 和 scrapy-redis的区别:
Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础 ...
- Redis笔记(二)Redis的部署和启动
Linux下Redis的部署和启动 下载安装介质 Redis官网地址:http://www.redis.io/目前最新版本是redis-3.0.3. 可以访问 http://download.redi ...
- Redis分布式部署,一致性hash
一致性哈希 由于hash算法结果一般为unsigned int型,因此对于hash函数的结果应该均匀分布在[0,2^32-1]区间,如果我们把一个圆环用2^32 个点来进行均匀切割,首先按照hash( ...
- Window Redis分布式部署方案 java
Redis分布式部署方案 Window 1. 基本介绍 首先redis官方是没有提供window下的版本, 是window配合发布的.因现阶段项目需求,所以研究部署的是window版本的,其实都 ...
- windows下安装Redis并部署成服务
windows下安装Redis并部署成服务 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 一:下载 下载地址: windows版本: http ...
随机推荐
- dll和ocx的简单理解
一.dll dll就是打包一些程序或者算法,根据我的理解分个类 1.算法的打包 比如打包C/C++的一些纯代码算法,计算平均值,极值,标准差....,只需要向外提供接口和入口参数,外部即可轻松调用 2 ...
- P2894 [USACO08FEB]酒店Hotel 线段树
题目大意 多次操作 查询并修改区间内长度==len的第一次出现位置 修改区间,变为空 思路 类似于求区间最大子段和(应该是这个吧,反正我没做过) 维护区间rt的 从l开始向右的最长长度 从r开始向左的 ...
- HDU 1796 How many integers can you find(容斥)题解
思路:二进制解决容斥问题,就和昨天做的差不多.但是这里题目给的因子不是质因子,所以我们求多个因子相乘时要算最小公倍数.题目所给的因数为非负数,故可能有0,如果因子为0就要删除. 代码: #includ ...
- redhat 7.2更新yum源时踩的坑
一.update yum .先查看redhat7.2中yum的包版本 [root@localhost jiayimeng]# rpm -qa | grep yum -.el7.noarch -.el7 ...
- C++ 清空队列(queue)的几种方法
C++中的queue自身是不支持clear操作的,但是双端队列deque是支持clear操作的. 方法一 直接用空的队列对象赋值 queue<int> q1; // process // ...
- 在SSM框架中,multfile转file
import org.apache.commons.fileupload.disk.DiskFileItem; import org.springframework.web.multipart.Mul ...
- 学习mybatis-3 step by step 篇二
Mapper XML 文件 基本的*Mapper.xml文件配置就不熬述了具体可参考: http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html 1.sq ...
- Myeclipse下配置svn
转载高鑫的..嘻嘻.. MyEclipse安装配置SVN 2013.10.15 No Comments 67 Views 配置之前请先关闭MyEclipse,OK开始了 1.解压site-1.6.18 ...
- python pandas demo
1. import pandas as pd web_stats = {,,,,,], ,,,,,], ,,,,,]} df = pd.DataFrame(web_stats) print(df.he ...
- robot_pose的类型
http://docs.ros.org/api/geometry_msgs/html/msg/Pose.html