SQLの窓 イラストAC フリー素材

2009年04月04日

Windowsで、メモ帳さえあればできる画像一括ダウンロードスクリプト

ほぼ、完成しているソースコードはこちらへどうぞ。

手書きブログ用カスタムパレットツールの為に作って実装済みのものです。
ちょっと慣れればだれでもできます。これでも解ると思いますが、プログラマ
として目覚めると、インターネット上でかなり特殊な事が、いともかんたんにできてしまいます(笑)

冗談はさておき。

やれ、スクリプトだ、プログラムだと言っても、JavaScript と基本変わりません。
そもそも「プロマミング言語に必要な要素」というのはわりとしれています。
 

1) 変数定義( 保存場所 )
2) 代入( 保存場所の変更 )
3) 繰り返し処理
4) 既存機能の呼び出し
5) 条件分岐


この5つあれば良いです。みんな同じです。 

で、この処理のキモは、4) で、これがあるおかげで出来ていますので、
プログラマとしてはたいした事はやっていません。
 

Set objSrvHTTP = Wscript.CreateObject("MSXML2.XMLHTTP") 
Set Stream = Wscript.CreateObject("ADODB.Stream") 
Set IEDocument = Wscript.CreateObject( "InternetExplorer.Application" ) 
Set Fso = CreateObject( "Scripting.FileSystemObject" ) 

しかも、このうちダウンロードに必要なのは、上の二つです。 
IEDocument は、HTML 内の IMG を探す為の入り口ですし、基本 JavaScript  でやってる事を
するだけ、Fso は、単に、スクリプトが存在しているフォルダのフルパスを取得する為
に使っていますが、今回に関しては別の方法でも取得できます。

 

on error resume next 
Call objSrvHTTP.Open("GET", strUrl, False ) 
if Err.Number <> 0 then 
	Wscript.Echo Err.Description 
	Wscript.Quit 
end if 
on error goto 0 
 
objSrvHTTP.Send 

ダウンロード部分なんかこれだけです。
objSrvHTTP.Send でうまく行ったら、objSrvHTTP.responseBody 
にデータが格納されるので、変数定義すらいりません。
そのまま、  Stream 使って、ディスクに保存します。

つまり、1つのファイルで URL が解っておれば、ここで目的は達成して終わりです。
注意しないといけないのは、あまり大きなファイルはやめたほうがいいです。
3メガぐらいまでにしましょう。( 推奨は 1メガまで )

ですから、画像のダウンロードなら特に問題は起きないはずです。
このプログラムでは、必要な画像の URL のリストをダウンロードしたHTML
の情報から加工して作成して、ループ処理で繰り返しダウンロードしています。

プログラミング的に気をつけるのは、このような連続処理では
間に休憩を入れてやっておくという事です。
( Wscript.Sleep 10 )

根拠はさすがに技術的になるので・・・

また機会があれば。



欲しい画像の URL が解っている場合、HTML に IMG タグを書いて
ブラウザで表示させれば、ブラウザが全部キャッシュというディスクのある場所
にダウンロードしてくれて表示します。

そのキャッシュからコピーするか、ブラウザを右クリックして保存するかしたとしても、
それはダウンロード済みの自分の PC 上のファイルの処理です。

つまり、このスクリプトはブラウザがやっている処理の不要な部分を全てはしょってる
だけなので、決してダウンロードそのものは早くないです。ふつうに、ブラウザがかかる
時間とおなじだけ必要です。

 

posted by at 2009-04-04 18:52 | 資料 | このブログの読者になる | 更新情報をチェックする