scrapyd的安装和基本使用

Posted songdongdong6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapyd的安装和基本使用相关的知识,希望对你有一定的参考价值。

Scrapyd是一款用于管理scrapy爬虫的部署和运行的服务,提供了HTTP JSON形式的API来完成爬虫调度涉及的各项指令。Scrapyd是一款开源软件,代码托管于Github上。本文简单地介绍一下在CentOS机器上安装和运行Scrapyd的各个步骤。

1. 安装scrapyd和scrapyd-client

使用pip可以轻松地安装scrapyd和scrapyd-client:

pip install scrapyd pip install scrapyd-client

安装完成后,直接运行命令scrapyd即可启动scrapyd。运行scrapyd之后,默认会在运行命令的目录下创建scrapyd运行时需要的logs等目录

2. 配置文件

scrapyd启动的时候会自动搜索配置文件,配置文件的加载顺序如下,最后加载的设置会覆盖前面的设置:

3. 为scrapyd创建启动脚本

cd至/etc/rc.d/init.d/目录或者/etc/init.d/目录下,创建并编辑名为scrapyd的文件,其中的PORT、HOME、BIN根据大家的实际情况修改:

PORT=6800HOME="/var/scrapyd/"BIN="/usr/local/bin/scrapyd"?pid=`netstat -lnopt | grep :$PORT | awk ‘/python/{gsub(//python/,"",$7);print $7;}‘`? start() { if [ -n "$pid" ]; then echo "server already start,pid:$pid" return 0 fi ? cd $HOME nohup $BIN & echo "start at port:$PORT"}? stop() { if [ -z "$pid" ]; then echo "not find program on port:$PORT" return 0 fi ? #结束程序,使用讯号2,如果不行可以尝试讯号9强制结束 kill -9 $pid echo "kill program use signal 9,pid:$pid"}? status() { if [ -z "$pid" ]; then echo "not find program on port:$PORT" else echo "program is running,pid:$pid" fi}?case $1 instart) start ;;stop) stop ;;status) status ;; *) echo "Usage: {start|stop|status}" ;;esac?exit 0

编辑完成后,为scrapyd文件增加执行权限:

chmod +x scrapyd

至此,我们已经可以使用service scrapyd start等命令了。如果有需要还可以继续未scrapyd添加到开机启动程序中:

chkconfig scrapyd on

4. 部署scrapy爬虫

4.1 让爬虫找到scrapyd

假设我们有一个豆瓣的爬虫,找到爬虫的scrapy.cfg文件,添加如下内容:

[deploy:server-douban]url = http://localhost:6800/project = example

其中,server-douban是服务器的名字,url是运行scrapyd的服务器的地址,6800是scrapyd的默认监听端口,project是此豆瓣爬虫所在的文件夹。在scrapy.cfg的目录下,检查配置列出当前可用的服务器:

scrapyd-deploy -l

4.2 部署爬虫

部署操作会打包你的当前项目,如果当前项目下有setup.py文件,就会使用它,没有的会就会自动创建一个。如果后期项目需要打包的话,可以根据自己的需要修改里面的信息,也可以暂时不管它。 从返回的结果里面,我们可以看到部署的状态,项目名称,版本号和爬虫个数,以及当前的主机名称。

scrapyd-deploy server-douban -p example

4.3 检查部署结果

列出服务器上所有的项目,检查名为example的项目是否已经部署上去了:

scrapyd-deploy -L server-douban

4.4 按照scrapy.cfg自动部署

scrapyd-deploy

5. 运行API

curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider# 带上参数curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1

curl http://localhost:6800/cancel.json -d project=myproject -d job=6487ec79947edab326d6db28a2d86511e8247444

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

curl http://localhost:6800/listversions.json?project=myproject

curl http://localhost:6800/listspiders.json?project=myproject

curl http://localhost:6800/listjobs.json?project=myproject

curl http://localhost:6800/delversion.json -d project=myproject -d version=r99

curl http://localhost:6800/delproject.json -d project=myproject

6. 参考文档

非常棒的一篇文档,是本文的主要参考:

http://blog.wiseturtles.com/posts/scrapyd.html

scrapy与scrapyd安装:

http://www.java123.net/v/1003419.html

以上是关于scrapyd的安装和基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Scrapyd 使用详解

scrapyd和scrapydweb使用详细教程

Scrapyd部署scrapy项目

Scrapyd-Client的安装

在scrapyd安装后找不到Scrapyd-deploy命令

Scrapyd发布爬虫的工具