Webページ内の情報(株価など)をファイルに保存するスクリプトの例
(目次)
1.概要
ここでは、Webページから取得したテキストをファイルに保存するスクリプトを紹介します。
今回紹介するサンプルスクリプトの動作内容は下記の通りです。
- Yahoo!ファイナンスから任天堂の企業の株価情報のページを表示する。
- 表示したWebページから株価を取得する。
- 取得した株価を日付と共にファイルに追加保存する。
毎日、株式の取引終了後にこのスクリプトを実行すれば、毎日の株価を記録することができます。
保存されたファイルは、CSVファイル(*.csv)です。テキストエディタやMicrosoft Excel等で開くことができます。
2.サンプルスクリプトのコード全文
下が今回紹介するするスクリプトになります。お気に入りフォルダなどにスクリプトファイル(*.sbv)として保存して実行してください。
スクリプト後半の取得した株価をファイルに保存する部分は次項で解説します。
スクリプト前半の株価を取得するまでのコードは、テーブル内(表内)のテキストを取得する方法の解説を参考にして下さい。
Replaceや、IsNumeric等のVBScriptの関数についてはVBScriptのリファレンスを参照して下さい。
' 未宣言変数の使用をチェックします。 Option Explicit ' 下のファイル名は環境に合わせて自由に変更してください。 Const cstrFilename = "c:\7974.csv" Dim Window1 Dim strVal Dim iVal, iCol, iRow Dim tbl ' Yahoo!ファイナンスの任天堂のページを表示 ' 他の企業の株価を取得するには7974の部分を各企業の銘柄コードに置き換える Set Window1 = NavigateNew("http://quote.yahoo.co.jp/q?s=7974&d=v1") Window1.SetFocus ' 取引値を含むテーブルを取得 Set tbl = TableOfCellText2(Window1.document.Body, "取引値", iCol, iRow) ' 取得したテーブル内から株価を取得 strVal = tbl.Rows(iRow+1).Cells(iCol+1).innerText ' 取得した株価に,(カンマ)が含まれている場合は削除 strVal = Replace(strVal, "," , "", 1, -1, vbTextCompare) ' 念のために取得した株価が数値であることを確認 If (IsNumeric(strVal) = TRUE) Then Dim objFS Dim objTxtFile ' FileSystemObject を作成 Set objFS = CreateObject("Scripting.FileSystemObject") ' テキストファイルを追加モード(ForAppending = 8)で開く ' ファイルが存在しない場合は作成 Set objTxtFile = objFS.OpenTextFile(cstrFilename, 8, TRUE) ' 現在の日付と株価をテキストファイルに保存 objTxtFile.WriteLine(Date() & "," & strVal) ' ファイルを閉じる objTxtFile.Close Else ShowMessage "価格の取得に失敗しました。(" & strVal & ")",,,FALSE End If
3.スクリプトでファイルに書き込む方法
VBScriptからハードディスク内のファイルを操作するには、Windowsスクリプトに実装されている。Scripting.FileSystemObjectを使用します。FileSystemObjectの詳細についてはMSDNのリファレンスを参照して下さい。
以下、サンプルスクリプトのファイルに保存する部分について解説します。
まず、CreateObject関数を使用してScripting.FileSystemObjectを作成します。
次にFileSystemObjectのOpenTextFileメソッドを使用して、ファイルを開きます。以後、そのファイルを操作するにはOpenTextFileメソッドが返すTextStreamオブジェクトを使用します。今回の例では、objTxtFile変数を介してファイルを操作しています。
ちなみに、既存ファイルが存在した場合に上書きしたくない処理の場合は、CreateTextFileメソッドを使用すると良いでしょう。
テキストファイルにテキストを書き出すにはTextStreamオブジェクトのWriteLineメソッドを使用します。
最後にTextStreamオブジェクトのCloseメソッドを呼び出してファイルを閉じます。ファイルを閉じるのを忘れないようにしましょう。
以上です。
2007/06/02