最近研究scrapy爬虫框架,在整站爬取上及其方便。但是因为boss的需求比较怪异,需要自动化的最大量不同站点做爬取,而scrapy实现上述功能又不够智能和方便。后来在scrapy文档里发现了scrapyd,找到了思路。
scrapyd相当于scrapy server,可以同时运行多个爬虫。
1、安装scrapyd:
pip install scrapyd
2、运行scrapyd:
scrapyd
运行结果如下:
XXXX:~$ scrapyd
2017-07-11T10:11:48+0800 [-] Loading /home/dbj/anaconda3/lib/python3.5/site-packages/scrapyd/txapp.py...
2017-07-11T10:11:48+0800 [-] Scrapyd web console available at http://127.0.0.1:6800/
2017-07-11T10:11:48+0800 [-] Loaded.
2017-07-11T10:11:48+0800 [twisted.scripts._twistd_unix.UnixAppLogger#info] twistd 16.6.0 (/home/dbj/anaconda3/bin/python 3.5.2) starting up.
2017-07-11T10:11:48+0800 [twisted.scripts._twistd_unix.UnixAppLogger#info] reactor class: twisted.internet.epollreactor.EPollReactor.
2017-07-11T10:11:48+0800 [-] Site starting on 6800
2017-07-11T10:11:48+0800 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site object at 0x7fd27e5895c0>
2017-07-11T10:11:48+0800 [Launcher] Scrapyd 1.2.0 started: max_proc=8, runner='scrapyd.runner'
访问地址:http://localhost:6800/

3、scrapyd的API:
daemonstatus.json:
作用:检查服务的负载状态。
用法:支持http的GET请求,无需参数。
请求示例:
curl http://localhost:6800/daemonstatus.json
响应示例:
{ “status” : “ok” , “running” : “0” , “pending” : “0” , “finished” : “0” , “node_name” : “node-name” }
addversion.json:
作用:向项目添加版本,如果项目不存在则创建该项目,默认情况下会使用项目的最新版本。
用法:支持http的POST请求。
参数:
-
- peoject(string,required(必选)):项目名称
- version(string,required):项目版本
- egg(file,required)): 包含项目代码的Python egg文件
请求示例: