インターネットの画像を自動習得する

 例えば画像掲示板のように、余り欲しくない多くの画像の中に、たまに気に入った画像が投稿されるけども他の投稿画像の数が多いと流されてしまう場合がある。そういう時こそプログラミングの出番であり、自分のプログラミング能力に見合った便利なアプリが作る事が出来る。
 こういう場合での方法は、画像が載っているホームページのhtmlファイル習得して、画像ファイルを特定できる文字列を検索して、ファイルをダウンロード、という手順になる。取り合えず掲示板の画像ファイルは全部習得して後で篩い分けるしかない。

例えばこんな画像掲示板のデータが欲しい。

 ところがある日、作成したアプリが全く画像ファイルを習得しなくなってしまった。稀にipアドレスが出入り禁止にされる場合もあるので、ルーターを再起動して変えても習得出来ず、サイトを見に行っても閉鎖されたりダウンしている訳でもない。ただ、レイアウトが変わっていた。開発言語C#のWebClientのStreamReaderを使う方法だとフレームが使われていると先頭のページだけしか読めないようで、画像ファイルのあるページに辿り着け無い。
WebClient wc = new WebClient();
Stream ur = wc.OpenRead("サイトのurl");
StreamReader temp = new StreamReader(ur, System.Text.Encoding.GetEncoding("Shift_JIS"));
html = html + temp.ReadToEnd();//htmlのtext内容を貯め込む

 そこで時間は掛かるがwebBrowserを配置して、画像掲示板のサイトを表示させるとフレームも含めて本体の情報を手に入れられる。但しこの方法だとページを表示が終了するのに時間が掛かるので、読み終えるまで待機させる必要がある。
webBrowser1.Navigate(url[i]);
while (webBrowser1.IsBusy |webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
System.Threading.Thread.Sleep(50);
System.Windows.Forms.Application.DoEvents();
}
// HTML解析
HtmlDocument htmlDoc = webBrowser1.Document;
html = html + htmlDoc.Body.InnerHtml;
 この方法で一件落着かと思いきや、ダウンロード後のサイズが2kBのファイルしか出来ない。多分、サイトの方で何らかのスクリプトが動いた上で表示されるのだろう。webBrowserには表示出来るので、何か画像を保存する方法があるのかと思いきや、情報は見つからなかった。ただ、webBrowserに表示した時点でIEのテンポラリファイルにはキャッシュとして残っているので、此処から引っ張り上げる事は可能だ。
 引っ張り上げたい画像ファイルの名前は判っているのでIEのテンポラリファイル内の全ファイルを検索して見つかったらコピーして他のフォルダに逃がせば良い。但しテンポラリファイル内では対象のファイルの名前は本体の末尾に"[1]"という文字が追加されているので、それを追加してやらないといけない。
string iecash = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);//インターネットキャッシュ
string[] cfiles = System.IO.Directory.GetFiles(@System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache), "*", System.IO.SearchOption.AllDirectories);

int file_id = 0;
string stTarget = gazou[j];
string stTargeth = stTarget.Substring(0, 13);
string stTargetk = stTarget.Substring(13);

for (int i = 0; i < cfiles.Length; i++)
{
if (System.IO.Path.GetFileName(cfiles[i]) == stTargeth+"[1]"+stTargetk)
{
file_id = i;
break;
}
}
System.IO.File.Copy(@cfiles[file_id], @gazousyuusyuufolder + "\\" + gazou[j],true);