検索
特集

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

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

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

設定値を決める

 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.

ページトップに戻る