VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す


こんにちは!あつもり(@atumori17)です。

VBScriptでIEを操作してWEBスクレイピング!の第2回目で~す。
前回はIEで複数のWEBサイトを一発で開くスクリプトを紹介しました。

VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
WEBスクレイピングでIEを起動して複数のサイトを別タブで同時に開くことができるスクリプトの紹介です。WEBスクレイピングとはプログラムでIEを操作して、WEBサイトに自動でログインしたり、膨大な情報の中から必要な情報だけを取得するテクニックです。

いよいよWEBスクレイピングでWEBサイトの情報を取得していきたいところですが、もう少し我慢してください。今回はVBScriptでファイルシステムオブジェクトを使ってテキストファイルに書き出す方法を紹介します。

なぜならWEBサイトから必要な情報を取得しても、保存する場所がなければ取得したデータを使うことはできないからです。

エクセルVBAを使ってWEBスクレイピングをやるならエクセルのワークシート上に保存したり、WEBアプリケーションからやるならMySQLなどのデータベース上に保存したりすると思います。

今回はVBScriptを使いますのでシンプルにテキストファイルに保存しようと思います。

スポンサーリンク

データをテキストファイルに書き出すスクリプト

テキストエディタを開き下記のコードを入力します。全て入力し終わったら「テキストファイルに出力.vbs」などのファイル名でデスクトップに保存します。

Option Explicit    
'テキストファイルに書き出す
OutputText "テキストファイルに書き出すテストです"

'テキストファイルへ出力
Function OutputText(ByVal strMsg)

    Dim objFSO
    Dim objText

    'ファイルシステムオブジェクト
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    'テキストファイルを開く
    Set objText = objFSO.OpenTextFile("C:\work\出力テスト.txt", 8, True)

    objText.write strMsg    
    objText.write vbCrLf

    objText.close
    
    'オブジェクト変数をクリア
    Set objFSO = Nothing
    Set objText = Nothing 

End Function

ソースコードの解説

自作関数に引数を渡して呼び出す

OutputText関数は自作した関数です。ソースコードの5行目から25行目になります。今回紹介するテキストファイルに書き出す処理をこの部分に書いています。

関数にすることでプログラムの中の使いたい箇所で呼び出すことができるので大変便利です。1行書くだけでで呼び出すことができるのでソースコードの可視性も上がりますよ

関数名 引数

今回のプログラムの場合「テキストファイルに書き出すテストです」という文言を引数としてOutputText関数に渡しています。

ファイルシステムオブジェクトでテキストファイルに書き出す

テキストファイルを読み書きするには、ファイルシステムオブジェクトを使います。ファイルシステムオブジェクトを使うとドライブやフォルダ、ファイルを操作できるようになります

次のように書くことでファイルシステムオブジェクトが使えるようになります。

Set FSOオブジェクト = WScript.CreateObject(“Scripting.FileSystemObject”)

OpenTextFileメソッドで書き出すファイルを開く

さきほどセットしたファイルシステムオブジェクトを使ってテキストファイルを開きます。

FSOオブジェクト.OpenTextFile(“ファイルパス”, モード, 作成方法)

「ファイルパス」にはテキストファイルを書き出す場所を指定します。
「モード」は読み取り専用なのか、追加書き込みできるかなどを指定できます。

内容
1 読み込み専用モード
2 新規書き込みモード
8 追加書き込みモード

「作成方法」はファイルパスで指定したファイルがなかった場合の処理を示します。ファイルがなかった場合、Trueなら新規作成、Falseなら作成しません

上記のソースコードだと以下のようになります。

Set objText = objFSO.OpenTextFile("C:\work\出力テスト.txt", 8, True)

writeメソッドでテキストファイルに書き込む

TextStreamオブジェクト.write 文字列

と書くことでOpenTextFileメソッドで開いたテキストファイルに文字列を書き込むことができます。書き込む文字列は今回の場合、ソースコード5行目の「テキストファイルに書き出すテストです」になります。

TextStreamオブジェクトとはテキストファイルを読み書きするためのオブジェクトです。

TextStreamオブジェクト.write vbCrLf

文字列を書き込んだあとに改行コードであるvbCrlfを入れて、書き出すテキストファイルに改行を入れています。

OutputText関数を何度も呼び出す場合、呼び出すごとに改行を入れないと見づらくなるからです。

closeメソッドでテキストファイルを閉じる

開いたテキストファイルを閉じます。

TextStreamオブジェクト.close

閉じたあとにオブジェクト変数をメモリから解放します。

Set FSOオブジェクト = Nothing
Set TextStreamオブジェクト = Nothing

アプリケーションを実行してみる

では実際に起動してみます。デスクトップにある「テキストファイルに出力.vbs」をダブルクリックして起動します。

OpenTextFileメソッドで指定したパスに「出力テスト.txt」ができました。

「テキストファイルに出力テスト.txt」を開くと「テキストファイルに出力テストです」が書かれています。

まとめ

いかかでしたか?今回の内容をまとめると以下のようになります。

  • テキストファイルに書き出すにはファイルシステムオブジェクトを使う
  • OpenTextFileメソッドで書き出すファイルを開く
  • OpenTextFileメソッドは読み込み専用、新規書き込み、追記書き込みなどのモードが選べる

テキストファイルに書き出すテクニックを覚えておけば色々な場面で使えますよ。WEBスクレイピングで取得した情報を書き出すことはもちろん、VBScript上で発生したエラーをログファイルとして書き出すなんてこともできますよ。

今回は以上です。それではお疲れさまでした~。

連載目次:VBScriptでお手軽WEBスクレイピング

Windowsを操作できるプログラミング言語「VBScript」を使えば、InternetExplorerを操作してWEBスクレイピングが可能です。 これで日々の情報収集はダブルクリック一発で完了させましょう!
  1. VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
  2. VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
  3. VBScriptでWEBスクレイピング!HTMLドキュメントとタイトルを取得する方法
  4. VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
  5. VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
  6. VBScriptでWEBスクレイピング!aタグのリンクURLをHTMLとして書き出す
  7. VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
  8. VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
  9. VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
  10. VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法

タイトルとURLをコピーしました