Subscribed unsubscribe Subscribe Subscribe

Webスクレイピング on Perl 入門

URLからページの内容を取得するにはどうすればいいか。

  • > Web::Query使えばできる。

URLのページにアクセスしてHTMLをぶっこぬいてきて、HTMLタグやid, classなどを指定して部分的にテキストを抽出するところまで全部やってくれるモジュール。

#!perl
use Web::Query;
use Encode;

my $content = wq('http://cookpad.com/recipe/252807')->find('title');
print encode_utf8($content->text), "\n";
#=> 簡単☆チキンカレー(中毒性あり) by スガシカコ [クックパッド] 簡単おいしいみんなのレシピが109万品
print encode_utf8($content->html), "\n";
#=> <title>簡単☆チキンカレー(中毒性あり) by スガシカコ [クックパッド] 簡単おいしいみんなのレシピが109万品</title>

wq('http://cookpad.com/recipe/252807')
        ->find('*[class^="step"]')  # stepから始まるclass名が振られている要素すべて
        ->each(sub {
                print $_->text, "\n";
        });
#=>
# 1≪下準備≫ 鶏肉をヨーグルトにつけておく...
# 2バターを溶かし赤唐辛子を入れ炒める。
# 3刻んだ にんにく、おろししょうがを入れ、...
# 4刻んだ玉葱を入れ、薄い飴色になるまで炒...
# 5予め水気を切っておいたトマト水煮を加え、...

一時は Web::Scraperというモジュールを使うのが流行したけど(http://en.yummy.stripper.jp/?eid=555416, http://e8y.net/mag/013-web-scraper/)、もっと簡単に使える Web::Query を使うことをすすめたい。

http://search.cpan.org/~tokuhirom/Web-Query-0.06/README.pod