淘先锋技术网

首页 1 2 3 4 5 6 7

Scrapyd部署爬虫项目

1、新建虚拟环境(方便管理),在虚拟环境中安装scrapy项目需要使用到的包

mkvirtualenv--python=C:\python27\scripts\python.exe scrapySpider 新建虚拟环境

进入虚拟环境使用pip将所需包安装完成

2、安装scrapyd模块,scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目

打开命令行工具执行pip installscrapyd

等待安装完成

输入scrapyd启动scrapyd服务

浏览器输入127.0.0.1:6800 即可查看


3、如果连接成功先关闭服务,自己在非C盘下新建一个文件夹,名称自定义如:scrapydTest

然后进入该文件夹,shift+右键打开命令行工具,输入scrapyd执行,执行完成后会新建一个dbs空文件夹,用来存放爬虫项目的数据文件

4、安装scrapyd-client模块。scrapyd-client模块是专门打包scrapy爬虫项目到scrapyd服务中的,进入虚拟环境,执行命令pip install scrapy-client,安装完成后,在虚拟环境的scripts中会出现scrapyd-deploy无后缀文件,这个scrapyd-deploy无后缀文件是启动文件,在Linux系统下可以远行,在windows下是不能运行的,所以我们需要编辑一下使其在windows可以运行


新建一个scrapyd-deploy.bat文件,右键选择编辑,输入以下配置,注意:两个路径之间是空格

@echo off
D:\ENVS\py2.7scrapy\Scripts\python.exe D:\ENVS\py2.7scrapy\Scripts\scrapyd-deploy %*

5、进入虚拟环境,进入到你的爬虫项目中,进入带有scrapy.cfg文件的目录,执行scrapyd-deploy,测试scrapyd-deploy是否可以运行,如果出现以下则正常

6、打开爬虫项目中的scrapy.cfg文件,这个文件就是给scrapyd-deploy使用的,将url这行代码解掉注释,并且给设置你的部署名称


7、再次执行scrapyd-deploy -l 启动服务,可以看到设置的名称


8、开始打包前,执行一个命令:scrapy list   ,这个命令执行成功说明可以打包了,如果没执行成功说明还有工作没完成

注意执行 scrapy list  命令的时候很有可能出现错误,如果是python无法找到scrapy项目,需要在scrapy项目里的settings.py配置文件里设置成python可识别路径

# 将当前项目的一级目录TotalSpider目录添加到python可以识别目录中
BASE_DIR = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, “TotalSpider”))

如果错误提示,什么远程计算机拒绝,说明你的scrapy项目有链接远程计算机,如链接数据库或者elasticsearch(搜索引擎)之类的,需要先将链接服务器启动
执行 scrapy list  命令返回了爬虫名称说明一切ok了,如下图

9、到此我们就可以开始打包scrapy项目到scrapyd了,用命令结合scrapy项目中的scrapy.cfg文件设置来打包

执行打包命令: scrapyd-deploy 部署名称 -p 项目名称

如:scrapyd-deploy wj -pTotalSpider

如下显示表示scrapy项目打包成功

如果出现


不用管,多提交几次,直到你的egg文件夹中有项目即可

如果不行就重启你的scrapyd服务,从新提交,然后在命令行工具输入开启爬虫命令

curl http://localhost:6800/schedule.json -dproject=项目名称 -d spider=爬虫名称

执行后,如果出现

则爬虫运行成功

可以去网页中127.0.0.1::6800查看爬虫运行状态


停止爬虫

curl http://localhost:6800/cancel.json -dproject=scrapy项目名称 -d job=运行ID

 

删除scrapy项目

注意:一般删除scrapy项目,需要先执行命令停止项目下在远行的爬虫

curl http://localhost:6800/delproject.json-d project=scrapy项目名称

 

查看有多少个scrapy项目在api中

curl http://localhost:6800/listprojects.json

 

查看指定的scrapy项目中有多少个爬虫

curlhttp://localhost:6800/listspiders.json?project=scrapy项目名称

 

总结几个请求url

1、获取状态

http://127.0.0.1:6800/daemonstatus.json

2、获取项目列表

http://127.0.0.1:6800/listprojects.json

3、获取项目下已发布的爬虫列表

http://127.0.0.1:6800/listspiders.json?project=myproject

4、获取项目下已发布的爬虫版本列表

http://127.0.0.1:6800/listversions.json?project=myproject

5、获取爬虫运行状态

http://127.0.0.1:6800/listjobs.json?project=myproject

 6、启动服务器上某一爬虫(必须是已发布到服务器的爬虫)

http://127.0.0.1:6800/schedule.json (post方式,data={"project":myproject,"spider":myspider})

7、删除某一版本爬虫

http://127.0.0.1:6800/delversion.json

(post方式,data={"project":myproject,"version":myversion})

8、删除某一工程,包括该工程下的各版本爬虫

http://127.0.0.1:6800/delproject.json(post方式,data={"project":myproject})