書くと宣言しながら、すっぽかしていたクローラー/スクレイピング Advent Calendar 2014の11日目です。ExcelのVBAで、IEの操作が出来ます。またその中の機能にDOM操作があります。この二つがあれば、Excelだけでスクレイピングできますよという話です。
何を隠そう、私が初めてスクレイピングに手を染めたのはこのExcel VBAスクレイピングでした。毎月定期的に所定のデータを観測するという仕事があって、面倒くさくて仕方がない私は記録用のExcelを魔改造して勝手に取得するようにしました。1時間くらい掛かってた作業も、ボタンポチになったので随分楽になったと記憶しています。(結局、ボタンを押すのも面倒くさくなって、毎日サーバサイドで動かすようにしましたが)
スクレイピングの手始めにピッタリのExcel VBAスクレイピングです。環境の用意が簡単なので、ノンプログラマーでも何とかなるのではとおもいます。
Excel VBA+IEスクレイピングでの主要な機能
Excel VBAでスクレイピングする場合は、下記のクラス・メソッドを利用します。一部バージョンによってサポートしていないので、ご注意ください。
- InternetExplorerクラス
名前の通りInternetExplorerを操作するクラス。Excelから実行で、IEがポコっと立ち上がる
- HTMLElementCollection
InternetExplorerクラスのドキュメントを扱うプロパティ?
- getElementsByTagName
タグ名からエレメント・コレクションを取得するメソッド
- getElementsByClassName
クラス名からエレメント・コレクションを取得するメソッド
(XP等では、未サポート?)
- getElementById
ID名からエレメントを取得するメソッド
(XP等では、未サポート?)
Excel VBA+IEスクレイピングの下準備とサンプルソース
次のライブラリを参照設定します。参照設定、懐かしいなぁ。
- Microsoft HTML Object library
- Microsoft Internet Controls
サンプルソース
手抜きですが、タグ名で取得しています。
Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private objIE As InternetExplorer Sub main() Set objIE = New InternetExplorer Dim url url = "http://www.hatena.ne.jp" objIE.Visible = True objIE.Navigate2 (url) '読み込み完了待ち While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True DoEvents Sleep 100 Wend Sleep 100 Dim objDoc As HTMLElementCollection Set objDoc = objIE.document Dim element As IHTMLElement For Each element In objDoc.getElementsByTagName("a") MsgBox (element.innerText) Next element objIE.Quit Set objIE = Nothing End Sub
Excel VBAなので、取得結果をExcelのシートに格納するなどに、絶大な威力を発揮します。Excel VBAなどで検索すると色々でてくるので、ぜひ見てください。
まとめ
自分としては、もはやExcel VBAでスクレイピングすることはないと思います。しかし、プログラムの実行環境がないよという場合には、Excel VBAという選択肢も良いのではないでしょうか?世の中には、VBAを極めている人は多数いるので、身近な人に聞けるというメリットもあります。ノンプログラマでも、ちょっと頑張れば何とかなると思うので、挑戦してみてはいかがでしょうか?
また、スクレイピングやクローラーの作成手順を一から知りたい人は、Rubyだけどこの本読むとよいですよ。
See Also:
「データを集める技術」という本を執筆しました
非エンジニアでも何とか出来るクローラー/Webスクレイピング術
プログラミング・レスで5分でサックリWebスクレイピング「kimonolabs」
『Rubyによるクローラー開発技法』を書きました
参照:
クローラー/スクレイピング Advent Calendar 2014
IE自動操作コード一覧(ExcelVBA / VBScript) - Qiita
データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)
- 作者: 佐々木拓郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/11/29
- メディア: 単行本
- この商品を含むブログを見る
Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
- 作者: 佐々木拓郎,るびきち
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/08/22
- メディア: 単行本
- この商品を含むブログ (10件) を見る