スクレイピングで記事ランキングのグラフ化まとめサイト2.0(1/5 ページ)

「オルタナティブ・ブログ」で公開されている週間アクセスランキングを基に、その結果をグラフ化してみよう。定期的なデータ取得と解析で、新たなコンテンツを作り出すことができる。

» 2007年12月18日 12時27分 公開
[大澤文孝,ITmedia]

このコンテンツは、オンライン・ムックPlus「まとめサイト2.0」の一部です。関連する記事は、こちらでご覧になれます。


 先週の記事では、LWPモジュールを使ったHTMLコンテンツの取得方法、そして、正規表現を使った、ごく簡単なスクレイピング手法までを説明した。

 今週は、より簡単にスクレイピングする手段として、「Web::Scraper」というスクレイピングモジュールを紹介する。また、「GD::Graph」というモジュールを用いて、スクレイピングしたデータを集計してグラフ化するところまでを実装しよう。

週間アクセスランキングをグラフ化

 「オルタナティブ・ブログ」では、週間ランキングが掲載されている

 ブログという性質上、ランキングに掲載されているほとんどの記事は、毎週、初出となるものがほとんどだ。しかし、それでも幾つかの記事は数週続けてランクインしていたり、急にランキングが上がったりするものもある。このような傾向は、グラフ化すると分かりやすい。

 実際に、本稿執筆時点で過去8週分(約2カ月前)をグラフ化したものが、図1だ。

 点だけのものが「各週の初出のもの」、そして、線が出ているのが、「2週以上続けてランクインした記事」である。今回は、このようなグラフ化の手法を解説する。

図1■週刊アクセスランキングのグラフ化

 このような仕組みは、「スクレイピング」と「グラフ化」の組み合わせで実装することになる。その実装にあたって用いるのが、次の2つのモジュールだ。

1)Web::Scraper

 スクレイピングのモジュール。過去ランキングのHTMLから、ランキング情報をスクレイピングするのに用いる。

2)GD::Graph

 グラフ化するためのモジュール。1)の順位をプロットする。

 以下、この2つのモジュールの使い方を見ていこう。

Web::Scraperによるスクレイピングの基礎

 まずはスクレイピング部分から解説していこう。

 まず最初には、過去のランキングをスクレイピングし、各週の1位から10位の「タイトル」と「URL」を抜き出す処理をする。そのための手法として、もちろん、前週説明した正規表現を使うこともできる。

 しかし、「表構造の各列を抜き出す」という処理は、正規表現だと複雑になりがちだ。そこで今回は、スクレイピング用に開発されたモジュールを用いることにする。

 Perl用のスクレイピングモジュールには、幾つかあるが、今回は、「Web::Scraper」というモジュールを用いよう。

 Web::Scraperは、「条件に合致した特定の要素の値を配列として取得できる」という優れたモジュールだ。CPANから入手できるので、ダウンロードしてインストールしておいてほしい。root権限があるなら、「cpan install Web::Scraper」としてインストールできる。

       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ