CasperJSで書いたものをcronで定期実行する
はじめに
CasperJSでブラウザの自動操作を書いたので、Cronで自動実行させる。
自動操作の中身はざっくりいうと、あるサイトにログインして、ボタンを一個押す作業。
これを一日一回行いたい。
cronにPATHを通す
cronにはパス(環境変数)がほとんど通っていないので、nodejsのパスを通してやらないとcasperjsも動かない。
cronにパスを設定する方法は色々あるみたいだが、crontabに直接書き込む方式にする。
crontabの編集は以下コマンドから。初めて実行すると利用するエディタを選択できる。vimを選んだ。
$ crontab -e
sirasu55.hatenablog.com
前の記事と同じようにnodejsをインストールしたならパスは以下のように追記する。
PATH=/usr/local/bin:/usr/bin:/bin:/home/pi/.nvm/versions/node/v6.11.4/bin
「:」で区切られたパスがそれぞれ環境変数になるらしい。
「/usr/local/bin:/usr/bin:/bin」まではデフォルトでも通ってるパス?
左のほうが優先されるらしいけどよくわからない。要勉強。
とりあえず1番右でも問題なかった。
もしnodejsを違う方法でインストールしたなら、以下のコマンドで現在のパスを確認できる。
casperjsが動く環境で実行してみて、それっぽいパスを追記すれば良いと思う。
$ echo $PATH
自動実行を登録する
同じく
$ crontab -e
パス以降の行に追記する
# 毎日6時半に自動実行 30 6 * * * casperjs [自動実行したいjsファイルのパス]
上記はこんな意味
「分 時 日 月 曜日 自動実行するコマンド」
例)
#毎日6時にプログラムを実行する 00 6 * * * python /home/hoge/script1.py #毎時10分にプログラムを実行する 10 * * * * python /home/hoge/script2.py #15分毎にプログラムを実行する */15 * * * * python /home/hoge/script3.py #毎週月曜日10:00にプログラムを実行する 00 10 * * 1 python /home/hoge/script4.py
Raspberry Pi 3 Model BにCasperJSをインストールする
CasperJSとは
ヘッドレスブラウザのPhantomJSを利用してブラウザ操作を行えるライブラリ。
Webサイトのスクレイピングだとか、フォーム入力だとか、ボタン押下だとか、そういうのをコード書くことで自動化できる。
開発におけるテストのためにも使われているらしい。
PhantomJSインストール
PhantomJSがないとCasperJSも動かないのでインストールする。
ソースコードからビルドするのが本当らしいが、めっちゃ時間かかるらしい。
ビルド済みを上げてくれている人がいるので、それを利用させて頂く。
$ sudo apt-get install libfontconfig1 libfreetype6 libpng12-0 $ curl -o /tmp/phantomjs -sSL https://github.com/fg2it/phantomjs-on-raspberry/releases/download/v2.1.1-wheezy-jessie/phantomjs $ sudo mv /tmp/phantomjs /usr/local/bin/phantomjs $ sudo chmod a+x /usr/local/bin/phantomjs
動作確認
$ phantomjs --version
CasperJSインストール
こっちはnpmでインストール可能
$ npm install -g casperjs
他のサイトを見ていると、「PhantomJSのパスが通ってなくてCasperJSも動かない」みたいなことも多いようだが、今回は何もしなくて問題なかった。
動作確認
$ casperjs --version
Raspberry Pi 3 Model BにnvmでNode.jsをインストールする
はじめに
Raspberry Piで最新版のNode.jsを利用するためにnvmでバージョン管理をしながらインストールする。
古いNode.jsをアンインストール
Raspberry Piには最初からNode.jsがインストールされているが、古いバージョンのためアンインストールをする。
$ sudo apt-get autoremove nodejs
nvmをインストールする
nvmインストール用フォルダを作成し権限を付与
$ sudo mkdir ~/.nvm $ sudo chmod 777 ~/.nvm
nvmのリポジトリのクローンを作成
ここでサーバーに接続できないエラーが出たが、ラズパイを再起動したらエラーは消えた
$ git clone https://github.com/creationix/nvm.git ~/.nvm
nvmを使えるようにする
$ source ~/.nvm/nvm.sh
nvmのバージョンを確認できればOK
2017/10/11時点では「0.33.5」がインストールされた
$ nvm --version
Node.jsのインストール
nvmでインストールできるnodeを確認し、LTSを選んでインストールする
今回はnode v6.11.4をインストールしたら、npm v3.10.10もインストールされた
$ nvm ls-remote $ nvm install v6.11.4
nodeとnpmのバージョン確認
$ node -v $ npm -v
起動時にnodeが動くようにする
$ sudo vim /etc/profile.d/nvm.sh 内容は以下 source ~/.nvm/nvm.sh
デフォルトのバージョンを設定する
$ nvm alias default v6.11.4
以上
Raspberry Pi 3 Model BにRASPBIANをインストールしてWindows10からSSH接続するまで
1. はじめに
Raspberry Pi 3 Model Bを購入したので、OSをインストールして、メインのWindows10機からSSHで繋げるようにする。今後の利用予定から、OSはGUIのあるものを選んだ。
2. OSのインストール
このセクションでは、Windows10機上で作業を行う。
2.1. OSをダウンロードする
以下の公式ページから「RASPBIAN JESSIE WITH PIXEL」をダウンロード。
ダウンロード後は解凍しておく。
https://www.raspberrypi.org/downloads/raspbian/
今回ダウンロードしたのは下記バージョン
Version:April 2017
Release date:2017-04-10
Kernel version:4.4
※横に「RASPBIAN JESSIE LITE」というのもあるが、これはCUIのみ版らしい。
2.2. OSファイルをSDにコピー
SiliconLinuxの「DD for Windows」を利用してコピーする。
「DD for Windows」は下記からダウンロードして管理者権限で実行。
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
①「対象ディスク」にSDを選択
②「対象ファイル」にダウンロードしたOSイメージファイルを選択
(今回は"2017-04-10-raspbian-jessie.img"。ファイル選択時"All files"設定が必要。)
③書込ボタンを押す(3回確認されるが全部「はい」)
書込が完了するまで待つ。
3. インストール後初期設定
OSをインストールしたSDカードをラズパイにセット。
このセクションでは一旦、モニタ、キーボード、マウスを接続し、ラズパイ上で作業。
3.1. Localisation情報の変更
「左上Raspberry Piマーク -> preference -> Raspberry Pi Configureation」を選択。
Localisationタブから
①Localeを「ja(Japanese)」「JP(Japan)」「UTF-8」に設定
②TimeZoneを「Asia」「Tokyo」に設定
③Keyboardを「Japan -> Japanese」に設定
④WiFi Countryを「JP Japan」に設定
①~④まで設定してOKを押すと、再起動を求められるので再起動する。
3.2. piユーザのパスワード変更
「左上Raspberry Piマーク -> 設定 -> Raspberry Pi の設定」を選択。
システムタブからパスワードを変更する
※piユーザのデフォルトパスワードは「raspberry」