@titon で行っている方法なのですが、芸能人の出演番組に関する情報を perl でスクレイピングする方法について説明したいと思います。
@titon ではYahoo!テレビで「伊集院光」で検索した結果のページを Web::Scraper モジュールでスクレイピングして取得しています。スクレイピングの部分だけを抜粋すると次のような感じです。
簡単に説明すると、scraper に続くブロック部分にでは process の後に XPath もしくは CSS セレクタと、それで指定された部分のデータを保持する「キー名」を指定します。 「キー名」の後に TEXT と書けばそのタグのテキスト部分が取れるようです。ひとつの process で複数の値を撮ることもできます。4 つ目の process がその例ですが、 program[] の中身がさらに link と title をキーにもつハッシュになります。 @href のように @ を付けると属性を取得することができます。
正直言って scraper のブロックの書き方が perl のどういう文法なのかはさっぱり分からないので、このページと Web::Scraper 作成者である miyagawa さんの資料を見て、ケーススタディ的に覚えました。 vi `perldoc -l Web::Scraper` でファイルを見ても、残念ながらすぐに理解できるものではありませんでした。
閑話休題。必要なデータの数だけ process を設定した後は scraper が返す Web::Scraper オブジェクトに対して、scrape メソッドでスクレイピング対象ページの URI オブジェクトを渡します。するとハッシュの形でスクレイピングの結果を得ることができます。ちなみに @href や @src のように URL が取れる属性では URI::http オブジェクトなどが返ってきます。とはいっても URI オブジェクトはスカラコンテキストでは普通の文字列として扱われるのでなんら特別な処理は必要ありません。
ということで上記コードの実行結果です。
簡単ですね。@titon ではさらに実行時の日付のデータを整形して twitter にポストしています。ということで今さらながらスクレイピングの紹介でした。












最近のコメント