ExcelVBAでスクレイピング~Web入門~
今回はExcelVBAでのWebスクレイピングの方法とその手順をまとめてみました。
この記事は以下のような方におすすめです。
- 慣れ親しんだExcelを使ってWebスクレイピングしたい
- 環境構築が面倒なので最小限の設定でスクレイピングしたい
- Webから情報を取得してExcelで保存したい
※注 本記事ではIE11でのスクレイピングを前提としています。
スクレイピングを紹介しようと思った背景
時々個人的なお願いでWebスクレイピングを依頼されることがあるのですが
最近はその依頼も増えてきたので自分が忘れないように+せっかくなので取り上げてみようと思った
次第です。手軽に始められるので皆さんもよかったら挑戦してください。
準備
ファイルの拡張子が.xlsmであること、開発タブがあること、VBEが開けていることを前提に準備から説明していきます。
まず、Webスクレイピングをするにあたりライブラリの参照設定から始めましょう。
Webスクレイピングをするにあたり必要なライブラリは以下の2つです。
- Microsoft Internet Controls
- Microsoft HTML Object Library
この2つのライブラリを参照設定することでスクレイピングが可能になります。
少し解説すると1つめのライブラリでIEの操作が可能になります。2つめのライブラリで
HTMLオブジェクト(classやid等)の操作が可能になります。
実践Webスクレイピング~スクレイピング用メソッド準備~
さて、準備が終わったところでいよいよスクレイピング用のコードを書いていきたいと思います。
以下のようにまずはスクレイピング用のメソッドを用意します。
コードは「VBAスクレイピング」で検索すると山のように出てくるためIEのセットアップや、レスポンス待ち処理は自分でよいと思ったものを
採用してください。
ここで1つ管理人が工夫している点としては検索用のメソッドを用意しているところです。
VBAでスクレイピングしようとするとどうしてもコードが横に長くなりがちです。
それはあまりスマートではないなと感じたので、メソッド化して長さを一定にすることにしました。
良かったら参考してください。
次はいよいよスクレイピングするサイトの設定です。
今回はYahooのログインを自動化してみましょう。
実践Webスクレイピング~サイトの解析~
スクレイピングする対象を決めたら次はサイトの解析を行います。
今回はYahooへのログインが目的なのでYahooのログインサイトをWebブラウザで解析しましょう。
ここではChromeを使って解析していきます。
Chromeは今選択している箇所のHTMLを表示できたりとかなり便利なのでおすすめです。
F12キーを押し、Webブラウザをデベロッパーモードに切り替えます。
デベロッパーモードに切り替えた画像
デベロッパーモードで調べていくとログインに必要なフィールド名は
- ID入力→username
- 「次へ」ボタン→btnNext
- パスワード入力→passwd
- 「ログイン」ボタン→btnSubmit
であることがわかります。しかもどれもidが指定されています。
idタグはHTMLで一意なので取得はとても容易です。
これなら簡単にログインできそうですね。
これを関数化し先ほどのIEセットアップメソッドと組み合わせます。
入力するIDやパスワードは各自で設定してください。
このマクロを実行することでYahooへのログインが自動化され、ログイン後IEが終了するかと思います。
皆さんうまくいったでしょうか?
最後に
今回はタグもidだったため簡単な部類のスクレイピングでしたが皆さんに
興味を持ってもらう上では良かったのではないかと思っています。
さらに進んでいくとログインした後に色々操作をしたりすることで色々な情報を取得できます。
そのあたりはまた別の機会に紹介します。
スクレイピングを使いこなせればエンジニアとしてだけでなく
Web上に大量にある情報の中から必要な情報が取得できるようになり日々の生産性がUPします。
皆さんもスクレイピングを身に付けて楽にWebから情報を仕入れましょう。
それでは今回はこの辺で
