« 株価のRSS | メイン | Fedora Core4 »

株価のRSS(その2)

 先日、XML::RSSの確認を行いました。次は株価のデータを取得する必要があります。

 株価データは色々なところでWebから参照できますが、今回はYahoo!ファイナンスから株価データを取得することにします。

 Yahoo!ファイナンスでは株価のデータをHTMLで取得できます。HTMLを解析して株価データを取り出す必要があります。こういう処理をHTML Hackと言われているみたいです。

 単にタグをパースすることでも取得できますが、今回はTemplate::Extractモジュールを利用します。Template::ExtractはTemplateとHTML文書を比較して該当する部分を取得するモジュールです。

 使い方は、こんな感じです。

use Template::Extract;
my $obj = Template::Extract->new;
my $ext = $obj->extract($template, $document);

 今回は$documentにはYahoo!ファイナンスから取得したHTMLデータを、$templateには以下のようなテンプレートを使用します。

<td nowrap align=left><a href="[% ... %]">[% trade_code %]</a></td>
<td nowrap align=center>[% market_place %]</td>
<td nowrap align=left><small>[% company_name %]</small></td>
<td nowrap align=center>[% trade_time %]</td>
<td nowrap><b>[% last_trade %]</b></td>
<td nowrap>[% change %]</td>
<td nowrap>[% change_percent %]</td>
<td nowrap>[% volume %]</td>
<td nowrap align=center><small><a href="[% chart_url %]">

 extractした結果は$extに入ります。$extから取り出すには以下のようにします。

my $trade_code = $ext->{'trade_code'};

 こんな感じにですかね。

http://www.xlabo.net/test/test_htmlhack.cgi?9991

 上記のcgiでは、HTTPアクセスにLWPやHTTP::Request::Commonといったモジュールを利用してます。また、URLにコードを付けることでその株価を表示するようにしてます。"&"で区切ると複数指定できるようにしてます。

 こんな感じ。

http://www.xlabo.net/test/test_htmlhack.cgi?9991&9992

 ファイルの内容はこちらから。

 さて、これで準備は出来ました。あとは取得したデータをXML::RSSモジュールで出力してやればいいことになります。

トラックバック

このエントリーのトラックバックURL:
http://blog.xlabo.net/mt-tb.cgi/6

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)