ranking:
- link:
- !!perl/scalar:URI::http http://blogs.itmedia.co.jp/yohei/2007/12/2_a9ab.html
- !!perl/scalar:URI::http http://blogs.itmedia.co.jp/kurikiyo/2007/12/jasrac_d67f.html
〜略(1位から10位まで)
title:
- 合コンに始まった2人は合コンに終わる(一般システムエンジニアの刻苦勉励)
- なぜ私はJASRACと契約するに至ったか(栗原潔のテクノロジー時評Ver2)
…略(1位から10位まで)
- link:
…略(1位から10位まで)
- title:
…略(1位から10位まで)
…略(linkとtitle)…
term:
- 12/3〜12/9
- 11/26〜12/2
〜略〜
上記はやや見づらいが、このダンプ結果からは各順位のコンテンツが、次のように取得できることが分かる。
1)n週前の期間
$result->{'title'}->[n]
2)n週前のランキングの第m位のリンク
$result->{'ranking'}->[n]->{'link'}->[m]
3)n週前のランキングの第m位のタイトル
$result->{'ranking'}->[n]->{'title'}->[m]
なおダンプ結果から分かるように、Web::Scraperでは、リンク先(上記、2)の値)は、URIオブジェクトとして格納されている。そのため、リンクを文字列として得るためには、as_stringメソッドを呼び出さなければならない。
以上でスクレイピングの処理が終わった。あとは、これをグラフ化するだけだ。
グラフ化するには、幾つかの方法があるが、この記事では、GD::Graphモジュールを使うことにする。GD::Graphは、グラフィックライブラリであるGDライブラリを用いて、円グラフや折れ線グラフなどを描画するモジュールだ(表1)。
ここでは、「点付き折れ線グラフ(GD::Graph::linespoints)」を使ってグラフ化する。
表1■GD::Graphで描けるグラフの種類
モジュール | 種類 |
---|---|
GD::Graph::lines | 折れ線グラフ |
GD::Graph::bars | 棒グラフ |
GD::Graph::points | 点グラフ |
GD::Graph::linespoints | 折れ線と点の組み合わせグラフ |
GD::Graph::area | 領域グラフ |
GD::Graph::mixed | 組み合わせた混合グラフ |
GD::Graph::pie | 円グラフ |
GD::Graphを使ったグラフは、1)グラフオブジェクトの作成、2)オプションの設定、3)データの設定、4)描画、という流れになる。
理解しておきたいのが、GD::Graphが、どのような書式のデータを受け入れるのかという点だ。そこでまずは、説明を分かりやすくするため、スクレイピングしたデータではなく、固定データを折れ線グラフとして描画する例をリスト3に示す。
次ページのリスト3を用いて作られたグラフが図3だ。
Copyright © ITmedia, Inc. All Rights Reserved.