Webサイトのダウンロードスクリプト


配列に定義したURLのHTMLをまとめてダウンロードするスクリプト
オフラインで読みたいBlogなどまとめて保存しておきたいと思いつくってみた。


webdownload.vbs

'--------------------------------------------------------------------------------------
'
'	Webページダウンロードスクリプト
'			(指定したURLのHTMLをダウンロードする)
'
'	注意点	スクリプト実行前にすべてのInternet Explorerを終了してください。
'
'	動作確認環境	Windows XP SP2 ,Internet Explorer 6 SP2
'
'--------------------------------------------------------------------------------------
'
'*********************************************************************
'
'	メイン処理
'
'*********************************************************************

	' ダウンロードするページの URLの定義 (配列で複数のURLを指定できます)
	Dim aURLList(256)

	aURLList(0) = "http://d.hatena.ne.jp/haradago/?of=1"
	aURLList(1) = "http://d.hatena.ne.jp/haradago/?of=2"
	aURLList(2) = "http://d.hatena.ne.jp/haradago/?of=3"

	' ファイルを保存するフォルダ名の定義(末尾に\を付ける事!!)
	sSaveToFolder = "D:\download\"


	Dim sURL
	Dim bLoadComplete

	Set Ie = WScript.CreateObject("InternetExplorer.Application", "IE_")
	Set oFS = WScript.CreateObject("Scripting.FileSystemObject")

	'定義したURLの終端までループ
	For Each sURL In aURLList

		If sURL = "" Then
			Exit For
		End If

		bLoadComplete = False

		' ページの取得と保存
		GetWebDocument (sURL)

		'IEよりHTMLを取得
		sSrcHTML = Ie.Document.all.tags("HTML")(0).innerHTML

		'取得したHTMLを名前を付けて保存する
		SaveToFile GetFileNameToSave(sSaveToFolder,sURL), sSrcHTML

	Next

Wscript.Echo "DownLoad完了" 

'*********************************************************************
'
'	サブルーチン
'
'*********************************************************************
' 保存するファイル名を編集する
Function GetFileNameToSave(sFolderName, sFileName)

	' ファイル名に使用しない文字を除去
	sFileName = Replace(sFileName, "?http://", "")
	sFileName = Replace(sFileName, "/", "_")
	sFileName = Replace(sFileName, ":", "_")
	sFileName = Replace(sFileName, "?", "_")

	GetFileNameToSave = sFolderName & sFileName & ".html"

End Function

' HTMLをテキストをファイルに保存する
Sub SaveToFile(sFileName, sHTMLSrc)

On Error Resum Next 'ページがなかった場合、ErrNumber=5が発生するため追加

	Set oTF = oFS.CreateTextFile(sFileName, True)
	oTF.Write sHTMLSrc
	oTF.Close
End Sub

' 指定したURLをロード
Sub GetWebDocument(sURL)

	bLoadComplete = False

	'指定したページを読み込む
	Ie.Navigate (sURL)

	'ロードが完了するまでWait
	Do 
		WScript.Sleep 10
	Loop While bLoadComplete = False

End Sub
'*********************************************************************
'
'	IEのイベント
'
'*********************************************************************
'ロード完了イベント
Sub IE_DocumentComplete(pdisp,surl)
	bLoadComplete = True
End Sub

'IEの終了イベント
Sub IE_OnQuit
	Set Ie = Nothing
	WScript.Quit
End Sub