scrapy是一个相对于你自己写代码效率很高的爬虫框架,模块化和结构化的模式使我们更方便更快捷的去爬起网页数据,相信要学习scrapyd的小伙伴就不需要我再仔细介绍scrapy怎么使用了,那么scrapyd和scrapy什么关系尼,scrapyd是用来管理scrapy的部署和运行的一款服务程序,scrapyd用发送请求的方式去让scrapy里的项目进行运行、停止、结束或者删除等,当然它可以同时管理多个爬虫。这样的我们部署scrapy时就比较方便的控制爬虫并且查看爬虫日志。下面我就简单的介绍一下如何使用scrapyd.
1.首先需要下载scrapyd包,如果你使用的虚拟环境,请先进入虚拟环境再下载scrapyd
执行命令:pip install scrapyd
等待下载完成,下载完成后,启动的scrapyd,命令即:scrapyd,启动后,有一句会显示你的端口号,如图所示
2:然后再网页中输入你的本地ip加上端口号即:127.0.0.1:6800 访问这个网页出现下面网页即scrapyd的界面
初次访问这个,还没有上传打包你的项目到scrapyd上,那上面的Available projects后面是没有任何项目名称的,成功后
3:第一步中如果连接启动成功后先关闭服务,然后再非C盘的地方创建一个文件夹,文件夹名字自定义,但是要见名知意,然后进入文件夹,按住shift键不松手,并右击该文件夹随意空白处,然后点击“在此处打开命令窗口”,即进入的是cmd,然后在cmd里重新启动scrapyd,即输入scrapyd,执行后文件里会多出一个空的文件夹dbs这个文件夹是用来存放爬虫文件数据的。
4: 接下来我们需要把我们的项目打包上传到上面scrapyd服务里,那么我们要下载一个包:scrapyd-client.同样的如果用的虚拟环境需要先进入虚拟环境再下载。命令:scrapyd-client==1.1.0 下载完毕后,你的python环境里scripts文件里会出现一个scrapyd-deploy(无扩展名),这个文件是启动文件,但是在windows下不能运行,只能在linux运行,所以我们要自己编写一个bat执行文件,创建一个名字为scrapyd-deploy.bat的文件,里面写下面的配置,注意:两个路径必须是双引号并且两个路径之间有空格,第一个路径填写python.exe的路径,第二个填写刚刚这个scrapyd-deploy文件的路径。如下所以:
@echo off
"C:\Users\qianzhen\Envs\scrapySpider\Scripts\python.exe" "C:\Users\qianzhen\Envs\scrapySpider\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
然后编写完成后 保存文件
然后我们进入爬虫项目的scrapy.cfg目录下,执行命令:scrapy-deploy 用来测试一下scrapy-deploy能否运行,如果出现下图,则表示成功!
5:我们当然配置我们的爬虫项目,让项目能在打包到scrapyd服务上,打开爬虫项目的scrapy.cfg,首先要解注释url,并把scrapyd的地址及端口写入,deploy后面写的是部署名称,自定义就行,project后面是我们的项目名称,应该默认就是对的不用改,改完如下:
6:然后我们在项目环境中启动我们的打包工具:scrapyd-deploy -l 然后会显示刚刚设置的部署名称和scrapyd地址,接着我们可以看看我们的打包工具里有哪些项目,执行scrapy list 然后会显示你项目的所有爬虫文件,然后我们可以把项目打包上传到scrapyd服务上了,打包上传的命令是:scrapyd-deploy 部署名称 -p 项目名称 ,然后出现返回200和项目的信息等就代表上传成功!如下图所示:
7: 如果打包成功,那么你就可以重新刷新scrapyd服务网页即 ip:端口,就是步骤2里的网页,刷新这个网页后,Available projects后面就是你刚刚打包上传的项目名称,如下图:
8:然后我们就要启动我们的爬虫项目,那用这个scrapyd去执行我们的爬虫项目,要注意的是我们并不是去执行命令,而是去对一个地址发送一个请求的方式来控制爬虫项目能的开启,关闭或者删除!执行语句及相关语句scrapyd的介绍(步骤2里的scrapyd documentation)里有,点开logs里有当前爬虫项目的状态,状态栏后面的log就是项目运行的日志,可以点开查看,当然刚刚创建的dbs文件里也会有爬虫项目的日志,下面也简单总结了一下爬虫语句还有爬虫图状态等图:
运行爬虫
curl http://localhost:6800/scedule.json -d project=项目名称 -d spider=项目名称
停止爬虫
curl http://localhost:6800/cancel.json -d project=scrapy项目名称 -d job=运行ID
删除scrapy项目
注意:一般删除scrapy项目,需要先执行命令停止项目下在远行的爬虫
curl http://localhost:6800/delproject.json -d project=scrapy项目名称
查看有多少个scrapy项目在api中
curl http://localhost:6800/listprojects.json
查看指定的scrapy项目中有多少个爬虫
curl http://localhost:6800/listspiders.json?project=scrapy项目名称