付加価値コンテンツとは――スクレイピングからグラフ化までまとめサイト2.0(2/5 ページ)

» 2007年12月21日 13時10分 公開
[大澤文孝,ITmedia]

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::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だ。

図3■リスト3の実行でグラフ化された結果

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ