この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
JavascriptでレンダーされるWebページの特定部分の情報を取ってくるみたいなことをするとき casperjs を使ったスクリプトが便利だけれど、cron実行しようとしたところ思うように動くまでに手こずったのでメモ。
環境
$ uname -mprsv
Darwin 17.7.0 Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT 2018; root:xnu-4570.71.2~1/RELEASE_X86_64 x86_64 i386
$ node -v
v10.7.0
$ phantomjs --version
2.1.1
$ casperjs --version
1.1.4
$ python --version
Python 2.7.15
スクリプト
$ cat /Users/kadosawa/bin/doruby
#!/usr/bin/env casperjs
var url = "https://doruby.jp/";
var casper = require('casper').create();
casper.start(url, function() {
var that = this;
var title = casper.evaluate(function() {
return $('#newest-entries div.entry').first().text();
});
this.echo(new Date + ' ' + title);
}); //開始
casper.run();
crontab内容
PATH=$PATH:/usr/bin:/usr/local/bin
* * * * * /Users/kadosawa/bin/doruby >> /tmp/doruby.log.txt 2>&1
ポイント
crontab だと node や phantomjs や python やらのパスがなくてエラーになるのでPATH変数を設定してさしあげます。
- 118 views