スクレイピングで記事ランキングのグラフ化:まとめサイト2.0(5/5 ページ)
「オルタナティブ・ブログ」で公開されている週間アクセスランキングを基に、その結果をグラフ化してみよう。定期的なデータ取得と解析で、新たなコンテンツを作り出すことができる。
設定値を決める
process行では、指定したCSSセレクタの条件にマッチしたものを「どうするか」も指定する。どのようにするかの指定は、次の書式だ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
必要に応じて、カンマでつなげて複数取得することもできる。「取り出す値」の部分には、次のものを指定する。
1)'text'
'text'と記述すると、抜き出した要素に囲まれているテキストを指定したことになる。
2)'@属性名'
'@属性名'と記述すると、その要素の属性の値を指定したことになる。基本的に、この属性値はテキストである。しかしながら、href属性に限り、URIオブジェクトになる。
3)関数の戻り値
「sub {}」のように関数のクロージャを記述すると、その関数内で処理した結果を設定できる。関数内では、「$_」が、要素に格納されているテキストを示すので、好きなような加工ができる。
リスト1では、process行を次のようにしている。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この結果、CSSセレクタの条件に合致するごとに、次が実行されるのだ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これは「termという名前の配列に、要素内のテキストを追記していく」という意味になる。ここでは「term[]」と配列にしているが、次のように右辺に配列ではない値をとることもできる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
HTMLの中に、配列にする必要がなく、単一値しかありえないもの(例えば、<title>の中身など)の場合には、右辺には、配列ではない値を指定することになるだろう。
ちなみに、結果が配列になるにもかかわらず、配列にしなかったときには、CSSセレクタにマッチするものが見つかるたびに、値が上書きされるので注意しよう。
result行でまとめる
result行では、process行で取り出した値を、どのようにして最終結果とするのかを指定する。
リスト1では次のように記述していた。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この結果、process行で保存しておいた「term」の値が最終的な結果として得られる。
今回の記事では、ランキングの基となるデータをHTMLからスクレイピングし、グラフ化を行うという基礎から実際のスクリプト内容を解説した。しかし、ここまでではグラフ化を行う中盤までしか至っていない。次回の記事でグラフ化を実際に行うまでの処理を紹介していこう。
関連記事
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.