VBScript による Web スクレイピング
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
背景
今日は以前の記事に関わる事務作業の自動化の準備です。
ブラウザシステムや Web をスクレイピングしたいときは結構あります。
一度作ったプログラムをうまく管理して、資産的に使用して行くことが今後の自動化の生産性を上げることにもつながります。
そこで、フォルダ構成や作成するプログラムの構成を考えていきます。
目的
個人的にはWebスクレイピングは Python で実装するのが主流な気がしますが、VBS で実装します。(笑)
自動化をして行く上で、都合の良い便利なプログラムの組み方を考えます。まぁ、基本通りです。ダラダラと書かずに関数もしくはサブルーチンを作成し、なるべくプログラムは関数、サブルーチンのみで構成する方針でいきます。
まず、VBScript をしまうためのフォルダ構成を作成します。
何でもいいので1つフォルダを作成します。私は『VBS』というフォルダを作成しています。
そして、関数、サブルーチンをしまうためにVBSフォルダの中に『myFunc』というフォルダを作成しました。
使えそうな関数のアイデアが浮かんだら、『myFunc』フォルダに関数の VBScript を保存しています。
まず、 VBScript で IE を新規に作成する関数を作成し、『myFunc』フォルダに保存します。
そして、外部から IE を新規に作成する関数を読み込んで IE で Web を表示させてみます。
関数
ソースコード
この関数は URL を引数で渡して、新規 IE で URL を表示するサブルーチンです。
newIE-targetURL.vbs
Sub newIE(targetURL)
'--------------------------------------------------------------------
' IE オブジェクトの生成
'--------------------------------------------------------------------
Set objIE = CreateObject("InternetExplorer.Application")
'--------------------------------------------------------------------
' IE オブジェクトの可視化
'--------------------------------------------------------------------
objIE.Visible = True
'--------------------------------------------------------------------
' IEを開く
'--------------------------------------------------------------------
objIE.navigate targetURL
'--------------------------------------------------------------------
' ページが読み込まれるまで待つ
'--------------------------------------------------------------------
Do While objIE.Busy = True Or objIE.readyState <> 4
WScript.Sleep 100
Loop
Set objIE = Nothing
End Sub
使い方
作成したnewIE-targetURL.vbs ファイルを呼び出して使うプログラムを書きます。
main.vbs
'------------------------------------------------------------------------------
' 自作関数のインクルード
'------------------------------------------------------------------------------
call IncludeFunction()
'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
' IE を開く
'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
'--- 変数宣言 ---
targetURL = "https://transit.yahoo.co.jp/"
'--- 実行 ---
call newIE(targetURL)
'------------------------------------------------------------------------------
' 終了通知
'------------------------------------------------------------------------------
MsgBox wscript.scriptname & " の処理が完了しました。"
'------------------------------------------------------------------------------
' 自作関数をコールするサブルーチン
'------------------------------------------------------------------------------
sub IncludeFunction()
'----------------------------------------------------------------------------
' 自分(=VBSファイル)のディレクトリを取得する
'----------------------------------------------------------------------------
FullPath = wscript.scriptfullname
FileName = wscript.scriptname
pathLen= len(FullPath) - len(FileName)
crrDir = left(FullPath, pathLen)
chiDir = "myFunc"
crrDir = crrDir & chiDir
'----------------------------------------------------------------------------
' ファイルシステムを扱うオブジェクトを作成
'----------------------------------------------------------------------------
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'----------------------------------------------------------------------------
' フォルダのオブジェクトを取得
'----------------------------------------------------------------------------
Set objFolder = objFileSys.GetFolder(crrDir)
'----------------------------------------------------------------------------
' FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
'----------------------------------------------------------------------------
For Each objFile In objFolder.Files
'--------------------------------------------------------------------------
' 自作関数のコール
'--------------------------------------------------------------------------
FuncFile = objFile.Name
Set objFile = objFileSys.OpenTextFile(crrDir & "\" & FuncFile)
ExecuteGlobal objFile.ReadAll()
objFile.Close
Next
'----------------------------------------------------------------------------
' メモリ解放
'----------------------------------------------------------------------------
Set objFile = Nothing
Set objFolder = Nothing
Set objFileSys = Nothing
end sub
Windows自動処理のためのWSHプログラミングガイド増補改訂版 JScript/VBScript対応 [ 五十嵐貴之 ] |
コメント
これで、 main.vbs を起動すると Yahoo! の路線情報の検索ページが新しい IE で開きます。
さらに、 IncludeFunction というサブルーチンで外部の VBScript ファイルの関数やサブルーチンを使用可能な状態にしています。
これからは、newIE-targetURL.vbs の様な色々な機能の関数、サブルーチンを作って、『myFunc』フォルダの保存していきます。
以上