Perl はじめてみた #perl
いまさら Perl?
最近、少しずつperlを勉強しています。なぜPerlなのか。一言で言えば、面白い言語だからです。
Perlはライブラリが充実しているので、「手軽で簡単」にサービスが作れるのが特徴です。また、ライブラリ群は、CPANというモジュールを用いて手軽にインストールして扱えます。「CPANこそ言語なのだ」なんていうくらい、モダンなPerlでは、使われいます。他にもPerlを学ぶ理由は、ありますが、単純に「楽しく学べ、幅が広い言語」だからです。
スクレイピングの練習
今回は、「自動画像ダウンロード」を書いてみました。教材にさせていただいたサイトは下記です。
サンプルコード
#!/usr/bin/perl use strict; use warnings; use Web::Scraper; use URI (); use LWP::Simple qw(mirror); use File::Basename qw(basename); my $uri = URI->new("http://chitekizaisan.blog28.fc2.com/blog-entry-3544.html"); my $scraper = scraper { process 'a[href]', 'urls[]' => '@href'; result 'urls'; }; my $result = $scraper->scrape($uri); foreach my $link (@{$result}) { if ($link =~ /\.jpe?g$/) { my $filename = basename($link); mirror($link, './pic/'.$filename); sleep 1; } } print "ダウンロード完了\n"; __END__
少しだけ解説
◆File::Basenameサブルーチン basename は、引数で渡されるファイルパスからファイル名を取り出す。
◆LWP::Simple
サブルーチン mirror は、If-Modified-Since(更新時間) と Content-Length ヘッダ(コンテンツ)に内容に変化があるかを調べ、変化があれば新しく保存されます。
◆Web::Scraper
次の記事がわかりやすいです。