付加価値コンテンツとは――スクレイピングからグラフ化まで:まとめサイト2.0(1/5 ページ)
HTMLを解析し、スクレイピングしたデータを基にグラフ化を行う。遷移を把握するために有効なものとして、さまざまな応用が考えられるだろう。
この記事は、オンライン・ムックPlus「まとめサイト2.0」の一部です。関連する記事は、こちらでご覧になれます。
前回までの記事で、オルタナティブ・ブログを例とした過去ランキングの「期間」を抜き出すスクレイピングについて解説した。
今回の記事では、スクレイピングの最終目的となる「各週の1位から10位のタイトルとURL」を配列として抜き出す手法、そしてグラフ化を行う手順までを見てみよう。
1位から10位のタイトル、そしてURLを抜き出すスクレイピングには、幾つかの手法が考えられる。例えばリスト2のように記述することが可能だ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト2では、$scrape_rankingと$scrape_termという2つのscraperブロックを定義している点に注目しよう。scrapeメソッドを呼び出しているのは、$scrape_termのほうだ。
このscraperブロックでは、次のように宣言している。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
1行目は、「id属性がpostrankingであるdiv要素の配下にある、class属性がrankingdataであるdiv要素」のテキストをterm[]に入れる処理であり、これにより、過去ランキングの「期間」がとれる。これはすでに説明した通りだ。
2行目は、「id属性がpostrankingであるdiv要素の配下にある、class属性がrankingdataであるdiv要素」が見つかったら、$scrape_rankingの結果をranking[]に入れるという処理を指定している。
この$scrape_rankingは、次のように指定した別のscraperブロックである。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このように別のscraperブロックを指定すると、Web::Scraperは、見つかった部分を、そのscraperブロックへと引き渡し、ネスト処理するようになっている。
上記の$scrape_rankingでは、span要素の配下にあるa要素が見つかったとき、そのhref属性をlink[]へ、テキストをtitle[]へ設定しており、これにより、それぞれのランキングの「リンク」と「タイトル」を入れることができる。
リスト2の結果をYAMLでダンプすると、例えば次のページのようになる。
Copyright © ITmedia, Inc. All Rights Reserved.