読者です 読者をやめる 読者になる 読者になる

六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

ランキングアニメーション・仕様書

使用技術 jQuery+PHP+HTML5/CSS?

(PHP) 頻繁に更新されるランキングサイトにアクセスしスクレイピング、順位+タイトル+リンク+値を上から10番までゲットしてJSONで返す

(jQuery)1分ごとにajaxで↑のスクリプトを実行する。タイトルをキーにして、順位に変動があればDOMを書き換える。この際にアニメーションする。

次のサイトを使う。 値上がり率:株式ランキング - Yahoo!ファイナンス

納期 6/7

まずPHPまで完成。下のコードはjson_encodeではなくprint_rでテスト出力してあります。PHPpython並に楽。

<?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] => )