スクレイピングで記事ランキングのグラフ化:まとめサイト2.0(1/5 ページ)
「オルタナティブ・ブログ」で公開されている週間アクセスランキングを基に、その結果をグラフ化してみよう。定期的なデータ取得と解析で、新たなコンテンツを作り出すことができる。
このコンテンツは、オンライン・ムックPlus「まとめサイト2.0」の一部です。関連する記事は、こちらでご覧になれます。
先週の記事では、LWPモジュールを使ったHTMLコンテンツの取得方法、そして、正規表現を使った、ごく簡単なスクレイピング手法までを説明した。
今週は、より簡単にスクレイピングする手段として、「Web::Scraper」というスクレイピングモジュールを紹介する。また、「GD::Graph」というモジュールを用いて、スクレイピングしたデータを集計してグラフ化するところまでを実装しよう。
週間アクセスランキングをグラフ化
「オルタナティブ・ブログ」では、週間ランキングが掲載されている。
ブログという性質上、ランキングに掲載されているほとんどの記事は、毎週、初出となるものがほとんどだ。しかし、それでも幾つかの記事は数週続けてランクインしていたり、急にランキングが上がったりするものもある。このような傾向は、グラフ化すると分かりやすい。
実際に、本稿執筆時点で過去8週分(約2カ月前)をグラフ化したものが、図1だ。
点だけのものが「各週の初出のもの」、そして、線が出ているのが、「2週以上続けてランクインした記事」である。今回は、このようなグラフ化の手法を解説する。
このような仕組みは、「スクレイピング」と「グラフ化」の組み合わせで実装することになる。その実装にあたって用いるのが、次の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」としてインストールできる。
Copyright © ITmedia, Inc. All Rights Reserved.