アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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

この回答への補足

ありがとうございます。

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

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

すいません教えてください。

補足日時:2004/08/26 20:31
    • good
    • 0

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



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

参考URL:http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop. …
    • good
    • 0

> もう一つ教えてほしいのですがディレクトリごと


> コピーすることは可能でしょうか?

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

がんばってくださいね。

この回答への補足

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

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

よろしくお願いいたします。

補足日時:2004/08/28 09:35
    • good
    • 0

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分で繰り返すした場合にすべて書く必要ありますか?

補足日時:2004/08/25 01:06
    • good
    • 0

すみません。



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

この回答への補足

すいません。

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

よろしくおねがい致します。

補足日時:2004/08/24 22:42
    • good
    • 0

> ファイルに保存ですが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を保存に変える記述がわかりません。
教えてください。お願いいたします。

補足日時:2004/08/25 07:48
    • good
    • 0

下記の内容を、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で記述するのですか?

すいません。

補足日時:2004/08/23 22:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!