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

» 2007年12月18日 12時27分 公開
[大澤文孝,ITmedia]
前のページへ 1|2|3|4|5       

設定値を決める

 process行では、指定したCSSセレクタの条件にマッチしたものを「どうするか」も指定する。どのようにするかの指定は、次の書式だ。


設定値 => 取り出す値

 必要に応じて、カンマでつなげて複数取得することもできる。「取り出す値」の部分には、次のものを指定する。

1)'text'

 'text'と記述すると、抜き出した要素に囲まれているテキストを指定したことになる。

2)'@属性名'

 '@属性名'と記述すると、その要素の属性の値を指定したことになる。基本的に、この属性値はテキストである。しかしながら、href属性に限り、URIオブジェクトになる。

3)関数の戻り値

 「sub {}」のように関数のクロージャを記述すると、その関数内で処理した結果を設定できる。関数内では、「$_」が、要素に格納されているテキストを示すので、好きなような加工ができる。

 リスト1では、process行を次のようにしている。


process 'div#postranking > div.rankingdata', 
  'term[]' => 'text';

 この結果、CSSセレクタの条件に合致するごとに、次が実行されるのだ。


term[] => 'text'

 これは「termという名前の配列に、要素内のテキストを追記していく」という意味になる。ここでは「term[]」と配列にしているが、次のように右辺に配列ではない値をとることもできる。


'term' => 'text';

 HTMLの中に、配列にする必要がなく、単一値しかありえないもの(例えば、<title>の中身など)の場合には、右辺には、配列ではない値を指定することになるだろう。

 ちなみに、結果が配列になるにもかかわらず、配列にしなかったときには、CSSセレクタにマッチするものが見つかるたびに、値が上書きされるので注意しよう。

result行でまとめる

 result行では、process行で取り出した値を、どのようにして最終結果とするのかを指定する。

 リスト1では次のように記述していた。


result 'term';

 この結果、process行で保存しておいた「term」の値が最終的な結果として得られる。

 今回の記事では、ランキングの基となるデータをHTMLからスクレイピングし、グラフ化を行うという基礎から実際のスクリプト内容を解説した。しかし、ここまでではグラフ化を行う中盤までしか至っていない。次回の記事でグラフ化を実際に行うまでの処理を紹介していこう。

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

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ