スクレイピングで記事ランキングのグラフ化:まとめサイト2.0(3/5 ページ)
「オルタナティブ・ブログ」で公開されている週間アクセスランキングを基に、その結果をグラフ化してみよう。定期的なデータ取得と解析で、新たなコンテンツを作り出すことができる。
Web::Scraperでスクレイピングする
HTMLから、どのようなデータを抜き出さなければならないのかが分かったところで、Web::Scraperを使って、実際にスクレイピングしてみよう。
Web::Scraperは、「定型的な使い方の書式」さえ理解すれば、すぐにスクレイピング処理ができる便利なモジュールだ。この書式は、あれこれ説明するよりも、実際に動くソースを見てもらったほうが早い。
まずはWeb::Scraperで、週間ランキングから、「ランキング期間」だけを取り出す例を見てみよう(それぞれのランキング順位を取得する方法は、やや複雑なので、後述する)。ランキング期間の取得条件は、すでに説明したように次の通りだ。
- <div id="postranging>の配下にある
- <div class="rankingdata">内のテキスト
この条件を満たすものをスクレイピングするのが、リスト1だ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト1のプログラムを実行すると、その結果は、次のようになる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト1では、変数の値に入っているデータをダンプするため、YAMLモジュールを用いているが、これは必須ではない。実際のデータは、リファレンスとなっており、次のようにして値を取り出すことができる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ちなみに、「YAML」は人間が読みやすいようにインデントを使って表現したデータ構造書式だ。詳細については、http://www.yaml.org/を参照してほしい。
スクレイピング条件の指定
Web::Scraperの基本的な使い方は、次のようになる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記に示したように、「use Web::Scraper;」とすると、「scraperブロック」を定義できるようになる。scraperブロックでは、以下の2つを設定する。
1)抜き出す条件を決めるprocess行(複数可)
2)最終的な結果を設定するresult行
この2つの行の設定方法を、順に見ていこう。
Copyright © ITmedia, Inc. All Rights Reserved.