あっという間の十年ブログ【Ruby篇】

"詮ずるところ#{プログラミング}は、ただ年月長く倦まずおこたらずして、はげみつとむるぞ肝要にて、学びやうは、いかやうにてもよかるべく、さのみかかはるまじきことなり。いかほど学びかたよくても、おこたりてつとめざれば、功はなし。また、人々の才と不才とによりて、その功いたく異なれども、才不才は、生まれつきたることなれば、力に及びがたし。されど、大抵は、不才なる人といへども、おこたらずつとめだにすれば、それだけの功は有る物なり。" - 本居宣長

またまた正規表現の練習

ミッション
ひまわり動画からサウスパークの動画を取得し、リンク形式で出力せよ!

use strict;
use warnings;
use LWP::Simple;

my $url;
my $html;

open(my $out, ">" , "south.html") or die("could not open file.");

for (my $i = 0; $i <= 10; $i++) {
        #1 .. 10ページ取得
	$url = "http://himado.in/?sort=today_view_cnt&keyword=サウスパーク&page=$i";
	$html = get $url;

	while ($html =~ m{<a.*?href='(http://himado\.in/[1-9]+)'.title='.{7}(.*?)'}g) {
                #リンク形式で出力 qqはダブルクォーテーション
		print $out qq(<a href="$1" title="$2">$2</a><br>\n);
	}
}
close($out);

ミソは$urlを入れ替えることによってページを切り替えているところです。
ソートした結果はこちら

結果を見てもらえば分かるがエピソードがいくつか抜け落ちており古いシリーズほどそれが顕著に表れている。シリーズ1,2に至っては一つも取得できていないのが見て分かる。

取得できたURLの例

<a href='http://himado.in/21537' title='サウスパーク 041 s03e10 チンポコモン' rel="nofollow">
<a href='http://himado.in/116696' title='サウスパーク 236 s16e13 A Scause for Applause' rel="nofollow">
<a href='http://himado.in/86374' title='サウスパーク 224 s16e01 Reverse Cowgirl' rel="nofollow">

取得できなかったURLの例

<a href='http://himado.in/10343' title='サウスパーク 067 s05e02 ”金”解禁' rel="nofollow">
<a href='http://himado.in/10318' title='サウスパーク 042 s03e11 宇宙戦士! 腹ぺこマーヴィン' rel="nofollow">
<a href='http://himado.in/87200' title='サウスパーク 225 s16e02 Cash For Gold' rel="nofollow">

ご覧のとおり、まったく違いがわかりません!
取得できなかったURLも正規表現には引っかかると思われるのできっと get されていないのだろうと推測できるわけですが肝心のソースを見るとはっきりとURLが書いてあるのです...\(^o^)/

未解決:-(