这是一篇即兴的短文,主要是为了记录我用 scrapyd
的心得。
之前做数据抓取,总是一个scrapy project做一个deploy,很不方便,一个一个更新起来也很麻烦,总觉得能有更好的方法去处理。今早看了看scrapyd,觉得这就是我想要的东西。
假设你有两个scrapy project:
你想将其做成service,在一台ubuntu server(gryffindoe)上每周定期运行。
在gryffindoe上,安装scrapyd:
$ lsb_release -cs
quantal
$ # 将 deb http://archive.scrapy.org/ubuntu quantal main 添加到sources.list中
$ sudo vim /etc/apt/sources.list
$ # 安装key
$ curl -s http://archive.scrapy.org/ubuntu/archive.key | sudo apt-key add -
$ sudo apt-get update
$ apt-cache search scrapyd
scrapyd-0.16 - Scrapy Service
scrapyd-0.17 - Scrapy Service
$ # 安装最新版本
$ sudo apt-get isntall scrapyd-0.17
安装完成后,scrapyd就自动在gryffindoe上运行了。
scrapyd默认运行在6800端口,假设gryffindoe的域名是 gryffindoe.com
,在你的alpha项目中,编辑 scrapy.cfg
:
[deploy:gryffindoe]
url = http://gryffindoe.com:6800/
project = alpha
然后你可以在你的scrapy项目下查看在gryffindoe上的scrapyd的状态:
$ # 查看当前scrapyd配置
$ scrapy deploy -l
gryffindoe http://gryffindoe.com:6800/
$ # 查看当前scrapyd上部署好的项目,现在还没有
$ scrapy deploy -L gryffindoe
接着我们把 alpha
部署到 gryffindoe
:
$ scrapy deploy graffindoe -p alpha
Building egg of alpha-1370823198
'build/scripts-2.7' does not exist -- can't clean it
zip_safe flag not set; analyzing archive contents...
Deploying alpha-1370823198 to http://gryffindoe.com:6800/addversion.json
Server response (200):
{"status": "ok", "project": "alpha", "version": "1370823198", "spiders": 1}
$ scrapy deploy -L gryffindoe
alpha
大功告成。进入到另一个project beta
的目录下,如法炮制:
$ scrapy deploy graffindoe -p beta
Building egg of beta-1370823198
'build/scripts-2.7' does not exist -- can't clean it
zip_safe flag not set; analyzing archive contents...
Deploying beta-1370823198 to http://gryffindoe.com:6800/addversion.json
Server response (200):
{"status": "ok", "project": "beta", "version": "1370823198", "spiders": 1}
$ scrapy deploy -L gryffindoe
alpha
beta
现在你打开 http://gryffindeo.com:6800/
,应该有如下显示:
Scrapyd
Available projects: alpha, beta
Jobs Items Logs Documentation
接下来我们可以远程指定要运行的spider了,很简单,页面上提示可以直接使用scrapyd的json API:
$ curl http://localhost:6800/schedule.json -d project=default -d spider=somespider
对于project alpha
下的spider alpha-spider
:
$ curl http://localhost:6800/schedule.json -d project=alpha -d spider=alpha-spider
这样,alpha-spider就开始运行了。你可以打开 http://gryffindeo.com:6800/
查看运行状态。
如果要定期运行spider,把这条命令加到cronjob里就可以了。
送上六一给小宝的礼物一枚:
如果您对本站的文章感兴趣,欢迎订阅我的微博公共账号:程序人生。每次博文发表时,您都能获得通知。此外,公共账号还会不定期推送一些短文,技术心得,供您参考。