- ベストアンサー
VBSでHPを保存するにはどうすればいいですか?
VBSを利用して指定したURLから情報を保存したいです。例えば、http://yahoo.co.jpの内容をローカルマシーンに読込んで保存する。できれば60分起きとかタイマー機能も。どうすればいいのかわからないので教えてください。おねがいします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
' トップページの URL sURL = "http://www.yahoo.co.jp/" ' ファイルを保存するフォルダ名 sSaveToFolder = "C:\\" ' "C:\\WINDOWS\\Temp\\" などなど Set Ie = WScript.CreateObject("InternetExplorer.Application", "IE_") Set oFS = WScript.CreateObject("Scripting.FileSystemObject") Dim aURLList bComplete = False ' トップページの取得と保存 GetWebDocument sURL sSrcHTML = Ie.Document.all.tags("HTML")(0).innerHTML SaveToFile GetFileNameToSave(sSaveToFolder,sURL), sSrcHTML ' リンク先の URL をすべて取得して配列に保存 ReDim aURLList(Ie.Document.all.tags("A").length) For i = 0 To Ie.Document.all.tags("A").length - 1 aURLList(i) = Ie.Document.all.tags("A")(i).href Next ' リンク先の取得と保存 For Each sURLList In aURLList If sURLList = "" Then Exit For End If GetWebDocument sURLList sSrcHTML = Ie.Document.all.tags("HTML")(0).innerHTML SaveToFile GetFileNameToSave(sSaveToFolder, sURLList), sSrcHTML Next ' 保存するファイル名は、フォルダ名+URL+拡張子(.html) Function GetFileNameToSave(sFolderName, sFileName) ' ファイル名(もともとリンク先の URL)にある、不正な文字を除去 sFileName = Replace(sFileName, "http://", "") sFileName = Replace(sFileName, "/", "_") sFileName = Replace(sFileName, ":", "_") sFileName = Replace(sFileName, "?", "_") GetFileNameToSave = sFolderName & sFileName & ".html" End Function ' テキストをファイルに保存する Sub SaveToFile(sFileName, sHTMLSrc) Set oTF = oFS.CreateTextFile(sFileName, True) oTF.Write sHTMLSrc oTF.Close End Sub ' IE に訪問させる Sub GetWebDocument(sURL) bComplete = False '指定したページを読み込む Ie.Navigate sURL Do 'ロードが完了するまで待つ WScript.Sleep 100 Loop While bComplete = False End Sub Sub IE_DocumentComplete(pdisp,surl) 'ロード完了時に発生 bComplete = True End Sub Sub IE_OnQuit Set Ie = Nothing WScript.Quit End Sub
その他の回答 (6)
- togino
- ベストアンサー率75% (97/129)
> VBSがイマイチわかりにくいので参考URL http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop.htm の「VBスクリプト講座・基礎編」あたりから
- togino
- ベストアンサー率75% (97/129)
> もう一つ教えてほしいのですがディレクトリごと > コピーすることは可能でしょうか? リンク先 URL に含まれるスラッシュ(/)ごとに、 ディレクトリを辿り(存在しなければ新規作成して) 保存すれは、可能です。 がんばってくださいね。
補足
すいません。お手数ですが詳しく教えていただくと助かります。 何かヒントとかあれば教えてください。 VBSがイマイチわかりにくいので参考URLとかあれば 紹介してください。 よろしくお願いいたします。
- togino
- ベストアンサー率75% (97/129)
For i = 0 To Ie.Document.all.tags("A").length - 1 MsgBox Ie.Document.all.tags("A")(i).href Next にて、その HTML に含まれる A タグのリンク先が すべて得られます。それらに対し、また同様に読み込めば いいだけです。
補足
MsgBoxでなくsHTMLSrcにデータいれる場合 setで宣言しなおさないといけないでしょうか? Aタグのリンク先がすべて得られるのわかるのですが Set oFS = WScript.CreateObject("Scripting.FileSystemObject") Set oTF = oFS.CreateTextFile("C:\\yahoo.html",True) oTF.Write sHTMLSrc oTF.Close をFor分で繰り返すした場合にすべて書く必要ありますか?
- togino
- ベストアンサー率75% (97/129)
すみません。 抜けていました Set oFS = WScript.CreateObject("Scripting.FileSystemObject") Set oTF = oFS.CreateTextFile("C:\\yahoo.html",True) oTF.Write sHTMLSrc oTF.Close
補足
すいません。 もしリンク先(2階層)とかファイルを取得したい場合 何を書き加えればいいですか? 例えば、同ページ内リンククリックした先が見たいです。 よろしくおねがい致します。
- togino
- ベストアンサー率75% (97/129)
> ファイルに保存ですがstrCopyFromで記述するのですか? ??strCopyFrom って何ですか??? ----- ' sHTMLSrc を適当にファイルに保存したりして下さい。 Set oTF = Fs.CreateTextFile("C:\\yahoo.html",True) oTF.Write sHTMLSrc oTF.Close にて、sHTMLSrc の中身が C:\yahoo.html に保存されます。
補足
すいません。イマイチFor i = 0 To Ie.Document.all.tags("A").length - 1 MsgBox Ie.Document.all.tags("A")(i).href Next でMsgBoxを保存に変える記述がわかりません。 教えてください。お願いいたします。
- togino
- ベストアンサー率75% (97/129)
下記の内容を、wget.vbs というテキストファイルで保存して、ダブルクリックしてみてください。 www.yahoo.co.jp のソースが得られたら、あとは URL を引数にとったり、得られたソースをファイルに保存したり、改造してみてください。 ' ここから ' 読み込む Web ページの URL sURL = "http://www.yahoo.co.jp/" Set Ie = WScript.CreateObject("InternetExplorer.Application", "IE_") '指定したページを読み込む Ie.Navigate sURL Do 'ロードが完了するまで待つ WScript.Sleep 100 Loop While bComplete = False ' HTML タグの中身をすべて取得 sHTMLSrc = Ie.Document.all.tags("HTML")(0).innerHTML MsgBox sHTMLSrc ' sHTMLSrc を適当にファイルに保存したりして下さい。 Sub IE_DocumentComplete(pdisp,surl) 'ロード完了時に発生 bComplete = True End Sub Sub IE_OnQuit Set Ie = Nothing WScript.Quit End Sub ' ここまで
補足
ありがとうございます。 ファイルに保存ですがstrCopyFromで記述するのですか? すいません。
補足
ありがとうございます。 もう一つ教えてほしいのですがディレクトリごとコピー することは可能でしょうか? 例えば、http://www.ztv.ne.jp/mina/のようにhtml化に 保存しないでそのままゲットしたいです。 すいません教えてください。