ラベル 自動取得 の投稿を表示しています。 すべての投稿を表示
ラベル 自動取得 の投稿を表示しています。 すべての投稿を表示

2013年10月7日月曜日

Casperjsを使用し為替レートを自動取得2/2

前回の続きです
メールを送信するためにssmtpをインストールします。
yum install ssmtp
sendmailがインストールされていればサービスを止め自動起動しないようにします。
service sendmail stop
chkconfig sendmail off
MTAをssmtpに切り替えます
下の例では2を入力しEnterを押すことでssmtpを利用するようになります。
alternatives --config mta

There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
* +1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.ssmtp

Enter to keep the current selection[+], or type selection number: 2
そして、ssmtpの設定を行います。
vim /etc/ssmtp/ssmtp.conf
root=hogehoge@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=hogehoge@gmail.com
AuthPass=gmailのパスワード
UseStarTTLS=YES
下線部を自分のメールアドレスとパスワードに書き換えてください。
root宛にテストメールを送信
mail -v root
Subject: test
test mail
Cc:
Ctrl+dを押下
これでうまく行っていれば先ほど設定したgmail宛に
メールが届きます。

ここまでくればあと一歩
あとは、前回作成した為替レート取得scriptと
合わせるだけです。

以下が私が作成した例です。
vim mailtest.sh
#!/bin/sh
address="hogehoge@gmail.com"
subject=`date +"%Y/%m/%d %p %I:%M:%S"`
body=`casperjs /usr/home/kaz/cron/ex.js`

subject=`echo $subject | nkf -j`

mail -s $subject $address << _EOT_
`echo $body | nkf -j`
_EOT_

exit
2行目のメールアドレスが転送したい宛先です。
3行目の+"%Y/%m/%d %p %I:%M:%S"の部分はメールの件名です
例では現在の"年/月/日 時:分:秒"がメールの件名で届きます。
4行目ではメールの本文を入力しています。
`casperjs /usr/home/kaz/cron/ex.js`というのは
/usr/home/kaz/cronにあるex.jsというファイルをcasperjsで実行するという意味で
「`」で囲むことで実行結果をbody変数へ代入しています。
あとは、8~10行目でメールを送信し完了です。

これでメールで為替レートを取得する仕組みが出来ましたので
これを定期的に実行するだけです。
いろいろなやり方があるようですが
私は以下のやり方で行っています。
vim /etc/crontab
以下を追記
0,10,20,30 * * * * root /usr/home/kaz/cron/exmail.sh
分時
このように指定することで
毎時0、10、20、30分に為替レートがメールで飛んでくるようになります。
上記の例を以下のように書くことで10分おきにメールすることができます。
0,10,20,30,40,50 * * * *

ただし、岡崎市立中央図書館事件のような例もあるので
あまりやり過ぎには気を付けましょう。
最短でも10分とか1時間間隔なら大丈夫だと思いますが
そこは保証できませんのであしからず。
あと、script間違いやここがわからない等ありましたらコメントいただけると嬉しいです。
もっとコードが書けるように日々精進していきます。

2013年10月2日水曜日

Casperjsを使用し為替レートを自動取得1/2

私は為替レートを一定時間ごとにメールで届くようにしています。

実際そういったwebサービスが有るような気がしましたが、よくわからなかったので自分でサーバを建ててそこから自動的にメールが送られるようにするシステムを構築しています。



まぁ、システムと言ってもそんなに大層なものでもありませんが一部に需要があるかもしれませんので備忘録を兼ねて書いていきたいと思います。

ちなみに私は以下のような構成で構築していますが多分Windowsだけでもできると思いますので気が向いたらそちらの方も書いていきたいと思います。



構成

使わなくなった古いノートPC(我が家では10年前のFMVで動いています)

OS:CentOS release 5.9 (Final)

必要なソフト

Casperjs

Phantomjs



Casperjsのインストール

git clone git://github.com/n1k0/casperjs.git

cd casperjs

git checkout tags/1.0.2

ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs



Phantomjsのインストール(32bit版)

mkdir ~/tmp

cd tmp

wget https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-i686.tar.bz2

tar jxvf phantomjs-1.9.2-linux-i686.tar.bz2

sudo cp phantomjs-1.9.2-linux-i686.tar.bz2/bin/phantomjs /usr/bin

以下のコマンドでそれぞれバージョンが表示されればOK


[kaz@hoge ~]$ phantomjs -v
1.9.2

[kaz@hoge ~]$ casperjs --version
1.0.2


問題なくインストールできているようなら「sample.js」を試してみます。

var casper = require('casper').create();
casper.start('http://casperjs.org/', function() {
    this.echo(this.getTitle());
});
casper.thenOpen('http://phantomjs.org', function() {
    this.echo(this.getTitle());
});
casper.run();


ここまでできればあとは目的のページからレートを取得するだけです。

取得は自分の好きなサイトから取得すれば良いのですが

今回は「http://nikkei225jp.com/fx/」を利用して取得するscriptを掲載します。



var casper = require('casper').create();

casper.start("http://nikkei225jp.com/fx/",function(){

        var date = this.evaluate(function() {

                return __utils__.getElementByXPath('//*[@id="wtime"]/div[1]').innerHTML;

  //nikkei225jp.com上の日付を取得します
        });
        var usdjpy = date;
        usdjpy += ",";
        usdjpy += "USDJPY";
        usdjpy += ",";
        usdjpy += this.evaluate(function() {

                return __utils__.getElementByXPath('//*[@id="tbl1fx"]/tbody/tr[4]/td[2]/a/div[1]/font/span[3]/b').innerHTML;
        });

        this.echo(usdjpy);
});
casper.run();




以上がサンプルになります。

getElementByXPathの括弧内にXPathで取得したい場所を指定します。

ちなみに上記を実行すると以下のようになります。

[kaz@hoge ~]$ casperjs ex.js
2013/10/06,USDJPY,97.46


ここまでくればあと少しです、あとは自分にメール

が届くようにするだけです。

それでは、続きは次回に。

つづき↓
Casperjsを使用し為替レートを自動取得2/2



FX初心者でも出来る!1日5分簡単副業 WCtake FXメルマガ通信