検索
特集

オルタナブログでまとめサイトまとめサイト2.0(3/3 ページ)

Web上で必要な情報だけを取り出せると、さまざまなデータ解析が可能だ。取り出すためのポイントは定型化されている個所を見つけること。あとは記事内で紹介するスクリプトで処理してみよう。

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 上記リスト内のように、「titleに記事のタイトル」「linkに記事のURL」が含まれている。よって、次のようにループ処理すれば、すべての記事タイトルと記事のURLが取得できる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

正規表現でスクレイピングする

 このように、XML::RSSモジュールを使うことで、RSSに含まれる、すべての記事のタイトルやリンクを取得できる。

 リンクが分かったところで、実際に投稿をたどり、その記事に含まれている「コメント数を抜き出す」という一種のスクレイピング処理をしてみよう。

HTMLの特徴を見極める

 今回、例としてとりあげているのは、オルタナティブ・ブログのRSSだ。このコンテンツの特徴を見てみよう。

 オルタナティブブログのそれぞれの記事には、図1へ示すように、「コメント数(n)」という項目があることが分かる(nは半角整数)。そこで今回は、この「n」の部分を抜き出し、コメント数としてカウントした。

 コンテンツのHTMLソースを見ると、該当個所は、次のように構成されていることが分かる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 hrefの部分はコンテンツごとに異なるが、どのコンテンツも、「<a class="comment">コメント (n)</a>」という書式だ。そこで、この「括弧内の数(上記の例では6)」は、次の正規表現で取得できる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


図1■ITmediaオルタナティブブログの「コメント数」の部分

コメント数ごとに並び替えて出力する

 実際に、RSSに含まれている記事をたどり、上記の正規表現を使ってコメントを取得、そしてコメントが多い順に並べて出力するというスクリプトは、リスト1のようになる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 リスト1の出力結果は、例えば次のようになる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ここでは単純に、<ul><li>を使ってリスト表示にしているだけだが、表形式にするとか、もう少し見やすい形式に加工するのは、読者にお任せしたい。

 今回は、正規表現を用いてスクレイピングしてみたのだが、いかがだっただろうか。前述のリストに示したように、「特定の文字列の並びから、特定の文字だけを抜き取る」という処理ならば、正規表現を使って容易にスクレイピングできる。しかし、もしこれが、「コメント数 (n)」という表記がなく、実際に「コメントとして付け加えられた数を把握する」場合は、どうだろうか?

 ソースを見ると分かるが、オルタナティブ・ブログの場合、実際のコメント部では次のようなHTMLになっている。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 この「<ul class="individual_box_list">の数を数え上げる」とか、「<ul class="individual_box_list">の中身を抜き出す」といった話になると、正規表現を考えるのが、とたんに難しくなる。

 そのような複雑なスクレイピングでは、やはりスクレイピング用のライブラリを使うのが得策だ。次回は、ライブラリを使ったスクレイピングを説明する予定だ。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る