たとえば、nigitama.com/download.php?id=xxxというURLをリクエストすると、2~3ページほどのPDFファイルが返ってくるとします。
id=xxxのxxxの部分には001~100までの数字がはいります。
数字が異なると違うPDFが返されます。
この100種類のPDFファイルをすべてダウンロードし、それぞれのPDFにクエリのxxxの個所と同じ名前を付けて保存したいと思います。つまり、id=123で返されるPDFファイルを123.pdfという名前で保存するという意味です。
こうした動きを実現するスクリプトやソフトはあるでしょうか?
環境/ソフトは以下の通りです。
Win XP Home
Chrome 1.0、Firefox 3.0、IE 7、Safari 3.2、Sleipnir 2.8
ダウンローダー雨をお勧めします。
このソフトを利用すれば、連番のファイルを一括でダウンロードできます。
実際の使い方はソフトのヘルプを見てもらえればわかると思いますが、質問者さんがおやりになりたい事をスクリーンショットにするとこんな感じです。
を参考に手を加えてみました。
call getHTTPasync("http://www.sio.no-ip.com/mt/shio/DSC_0188.jpg?id=123") Sub getHTTPasync(strURL) on error resume next Dim objweb Dim arwork Dim objADO Dim ret,res ' arwork = split(strURL,"/") ' strFname = Replace(Wscript.ScriptFullName,Wscript.ScriptName,"") & arwork(Ubound(arwork)) arwork = split(strURL,"id=") strFname = Replace(Wscript.ScriptFullName,Wscript.ScriptName,"") & arwork(Ubound(arwork)) & ".jpg" err.clear Set objweb = CreateObject("MSXML2.ServerXMLHTTP.6.0") 'MSXML環境依存なるべく排除 if err.number <> 0 then err.clear Set objweb = CreateObject("MSXML2.ServerXMLHTTP") end if if err.number <> 0 then err.clear Set objweb = CreateObject("MSXML2.XMLHTTP") end if if err.number = 0 then 'objweb.Open "GET",strURL,False,"ユーザーID", "パスワード" objweb.Open "GET", strURL, False objweb.Send res = objweb.responseBody set objADO = CreateObject("ADODB.Stream") objADO.Type = 1 'BINARY objADO.Open() objADO.Write(res) objADO.SaveToFile strFname,2 ' SAVE CREATE OVERWRITE objADO.Close wscript.echo "接続ステータス : " & objweb.Status & " (" & objweb.statusText & ")" & _ vbCrLf & strFname & " に保存しました" Set objADO = Nothing Set objweb = Nothing else ' err wscript.echo "CreateObject失敗." end if End Sub
ありがとうございます。
このスクリプトをどのように修正すればよいのかわからずにあきらめました。結局 VBA でダウンロードするスクリプトを作って解決しました。
またお願いします。
ありがとうございます。
試してみましたが、対象ページはログインが必要なサイトだったためできませんでした。Invine (みたいな名前) のソフトも試しましたがやはりダメでした。
最終的に VBA で IE を操作して「名前を付けて保存」するスクリプトを作って解決しました。
またよろしくお願いします。