こんにちは!あつもり(@atumori17)です。
VBScriptでIEを操作してWEBスクレイピング!の第2回目で~す。
前回は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関数に渡しています。
ファイルシステムオブジェクトでテキストファイルに書き出す
テキストファイルを読み書きするには、ファイルシステムオブジェクトを使います。ファイルシステムオブジェクトを使うとドライブやフォルダ、ファイルを操作できるようになります。
次のように書くことでファイルシステムオブジェクトが使えるようになります。
OpenTextFileメソッドで書き出すファイルを開く
さきほどセットしたファイルシステムオブジェクトを使ってテキストファイルを開きます。
「ファイルパス」にはテキストファイルを書き出す場所を指定します。
「モード」は読み取り専用なのか、追加書き込みできるかなどを指定できます。
値 | 内容 |
---|---|
1 | 読み込み専用モード |
2 | 新規書き込みモード |
8 | 追加書き込みモード |
「作成方法」はファイルパスで指定したファイルがなかった場合の処理を示します。ファイルがなかった場合、Trueなら新規作成、Falseなら作成しません。
上記のソースコードだと以下のようになります。
Set objText = objFSO.OpenTextFile("C:\work\出力テスト.txt", 8, True)
writeメソッドでテキストファイルに書き込む
と書くことでOpenTextFileメソッドで開いたテキストファイルに文字列を書き込むことができます。書き込む文字列は今回の場合、ソースコード5行目の「テキストファイルに書き出すテストです」になります。
TextStreamオブジェクトとはテキストファイルを読み書きするためのオブジェクトです。
文字列を書き込んだあとに改行コードであるvbCrlfを入れて、書き出すテキストファイルに改行を入れています。
OutputText関数を何度も呼び出す場合、呼び出すごとに改行を入れないと見づらくなるからです。
closeメソッドでテキストファイルを閉じる
開いたテキストファイルを閉じます。
閉じたあとにオブジェクト変数をメモリから解放します。
Set TextStreamオブジェクト = Nothing
アプリケーションを実行してみる
では実際に起動してみます。デスクトップにある「テキストファイルに出力.vbs」をダブルクリックして起動します。
OpenTextFileメソッドで指定したパスに「出力テスト.txt」ができました。
「テキストファイルに出力テスト.txt」を開くと「テキストファイルに出力テストです」が書かれています。
まとめ
いかかでしたか?今回の内容をまとめると以下のようになります。
- テキストファイルに書き出すにはファイルシステムオブジェクトを使う
- OpenTextFileメソッドで書き出すファイルを開く
- OpenTextFileメソッドは読み込み専用、新規書き込み、追記書き込みなどのモードが選べる
テキストファイルに書き出すテクニックを覚えておけば色々な場面で使えますよ。WEBスクレイピングで取得した情報を書き出すことはもちろん、VBScript上で発生したエラーをログファイルとして書き出すなんてこともできますよ。
今回は以上です。それではお疲れさまでした~。
連載目次:VBScriptでお手軽WEBスクレイピング
Windowsを操作できるプログラミング言語「VBScript」を使えば、InternetExplorerを操作してWEBスクレイピングが可能です。 これで日々の情報収集はダブルクリック一発で完了させましょう!- VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
- VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
- VBScriptでWEBスクレイピング!HTMLドキュメントとタイトルを取得する方法
- VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
- VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
- VBScriptでWEBスクレイピング!aタグのリンクURLをHTMLとして書き出す
- VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
- VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
- VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
- VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法