ランキングアニメーション・仕様書
(PHP) 頻繁に更新されるランキングサイトにアクセスしスクレイピング、順位+タイトル+リンク+値を上から10番までゲットしてJSONで返す
(jQuery)1分ごとにajaxで↑のスクリプトを実行する。タイトルをキーにして、順位に変動があればDOMを書き換える。この際にアニメーションする。
次のサイトを使う。 値上がり率:株式ランキング - Yahoo!ファイナンス
納期 6/7
まずPHPまで完成。下のコードはjson_encodeではなくprint_rでテスト出力してあります。PHPもpython並に楽。
<?php require_once 'simple_html_dom.php'; class RankInfo{ public $elements = array(); public $format; } class RankElement{ public $rank, $title, $body, $value; } $dom = file_get_html('http://info.finance.yahoo.co.jp/ranking/?kd=1&tm=d&mk=1'); $info = new RankInfo(); foreach($dom->find('tr.rankingTabledata') as $tr) { $atd = $tr->find('td'); $elem = new RankElement(); $elem->rank = $atd[0]->plaintext; $elem->title = $atd[3]->plaintext; $elem->value = $atd[6]->plaintext; $elem->body = $atd[5]->plaintext.'('.trim($atd[7]->plaintext).')'; $elem->link = $atd[1]->find('a')[0]->href; $info->elements[] = $elem; if(count($info->elements) == 10) break; } print_r($info); ?>
実行例
RankInfo Object ( [elements] => Array ( [0] => RankElement Object ( [rank] => 1 [title] => (株)エムケイシステム [body] => 13,670(+2,830) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=3910.t [value] => +26.11 % ) [1] => RankElement Object ( [rank] => 2 [title] => (株)ソフトフロント [body] => 325(+62) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=2321.t [value] => +23.57 % ) [2] => RankElement Object ( [rank] => 3 [title] => (株)ナガホリ [body] => 328(+62) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=8139.t [value] => +23.31 % ) [3] => RankElement Object ( [rank] => 4 [title] => 日本コンピュータ・ダイナミクス(株) [body] => 1,779(+300) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=4783.t [value] => +20.28 % ) [4] => RankElement Object ( [rank] => 5 [title] => (株)MAGねっとホールディングス [body] => 121(+20) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=8073.t [value] => +19.80 % ) [5] => RankElement Object ( [rank] => 6 [title] => シンデン・ハイテックス(株) [body] => 6,520(+1,000) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=3131.t [value] => +18.12 % ) [6] => RankElement Object ( [rank] => 7 [title] => ムーンバット(株) [body] => 242(+35) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=8115.t [value] => +16.91 % ) [7] => RankElement Object ( [rank] => 8 [title] => ITbook(株) [body] => 1,642(+215) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=3742.t [value] => +15.07 % ) [8] => RankElement Object ( [rank] => 9 [title] => タケダ機械(株) [body] => 418(+49) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=6150.t [value] => +13.28 % ) [9] => RankElement Object ( [rank] => 10 [title] => (株)マルマエ [body] => 1,263(+139) [link] => http://stocks.finance.yahoo.co.jp/stocks/detail/?code=6264.t [value] => +12.37 % ) ) [format] => )