解決済み

VBSでHPを保存するにはどうすればいいですか?

  • すぐに回答を!
  • 質問No.971760
  • 閲覧数3767
  • ありがとう数3
  • 気になる数0
  • 回答数7
  • コメント数0

お礼率 4% (2/41)

VBSを利用して指定したURLから情報を保存したいです。例えば、http://yahoo.co.jpの内容をローカルマシーンに読込んで保存する。できれば60分起きとかタイマー機能も。どうすればいいのかわからないので教えてください。おねがいします。

質問者が選んだベストアンサー

  • 回答No.5

ベストアンサー率 75% (97/129)

' トップページの 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
補足コメント
takako20

お礼率 4% (2/41)

ありがとうございます。

もう一つ教えてほしいのですがディレクトリごとコピー
することは可能でしょうか?

例えば、http://www.ztv.ne.jp/mina/のようにhtml化に
保存しないでそのままゲットしたいです。

すいません教えてください。
投稿日時 - 2004-08-26 20:31:35
感謝経済、優待交換9月20日スタート

その他の回答 (全6件)

  • 回答No.7

ベストアンサー率 75% (97/129)

> VBSがイマイチわかりにくいので参考URL

http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop.htm
の「VBスクリプト講座・基礎編」あたりから
  • 回答No.6

ベストアンサー率 75% (97/129)

> もう一つ教えてほしいのですがディレクトリごと
> コピーすることは可能でしょうか?

リンク先 URL に含まれるスラッシュ(/)ごとに、
ディレクトリを辿り(存在しなければ新規作成して)
保存すれは、可能です。

がんばってくださいね。
補足コメント
takako20

お礼率 4% (2/41)

すいません。お手数ですが詳しく教えていただくと助かります。
何かヒントとかあれば教えてください。

VBSがイマイチわかりにくいので参考URLとかあれば
紹介してください。

よろしくお願いいたします。
投稿日時 - 2004-08-28 09:35:48
  • 回答No.4

ベストアンサー率 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 タグのリンク先が
すべて得られます。それらに対し、また同様に読み込めば
いいだけです。
補足コメント
takako20

お礼率 4% (2/41)

MsgBoxでなくsHTMLSrcにデータいれる場合

setで宣言しなおさないといけないでしょうか?

Aタグのリンク先がすべて得られるのわかるのですが
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set oTF = oFS.CreateTextFile("C:\\yahoo.html",True)
oTF.Write sHTMLSrc
oTF.Close
をFor分で繰り返すした場合にすべて書く必要ありますか?
投稿日時 - 2004-08-25 01:06:10
  • 回答No.3

ベストアンサー率 75% (97/129)

すみません。

抜けていました
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set oTF = oFS.CreateTextFile("C:\\yahoo.html",True)
oTF.Write sHTMLSrc
oTF.Close
補足コメント
takako20

お礼率 4% (2/41)

すいません。

もしリンク先(2階層)とかファイルを取得したい場合
何を書き加えればいいですか?
例えば、同ページ内リンククリックした先が見たいです。

よろしくおねがい致します。
投稿日時 - 2004-08-24 22:42:54
  • 回答No.2

ベストアンサー率 75% (97/129)

> ファイルに保存ですがstrCopyFromで記述するのですか?

??strCopyFrom って何ですか???

-----
' sHTMLSrc を適当にファイルに保存したりして下さい。
Set oTF = Fs.CreateTextFile("C:\\yahoo.html",True)
oTF.Write sHTMLSrc
oTF.Close

にて、sHTMLSrc の中身が C:\yahoo.html に保存されます。
補足コメント
takako20

お礼率 4% (2/41)

すいません。イマイチFor i = 0 To Ie.Document.all.tags("A").length - 1
MsgBox Ie.Document.all.tags("A")(i).href
Next
でMsgBoxを保存に変える記述がわかりません。
教えてください。お願いいたします。
投稿日時 - 2004-08-25 07:48:25
  • 回答No.1

ベストアンサー率 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

' ここまで
補足コメント
takako20

お礼率 4% (2/41)

ありがとうございます。


ファイルに保存ですがstrCopyFromで記述するのですか?

すいません。
投稿日時 - 2004-08-23 22:43:51
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ