「WEBサイトのデータを、そのまま、または必要な一部分を抜出(取得)してエクセルに貼り付けたい。」というとき用のメモ。
いわゆる、スクレイピング、スパイダリングをエクセル(VBA)でやってやろうという話。
なお、スクレイピング関連用語の詳細や、他のプログラミング言語でデータ取得する方法は、
別ページ
にまとめている。
■目次
■本文
■ページの概要
「WEBサイトのデータを、そのまま、または一部を抜き出してエクセルに貼り付けたい。」というとき用のメモ。
想定シーン
- 株取引を初めとしたWEBを使ったEDI(Electronic Data Interchange )のフローの一部
- 大量の情報収集
VBAでスクレイピングしている具体例
エクセルでの処理方法
エクセルで処理する方法を大きくわけると、
処理方法(a).VBA他のプログラム言語を利用しない。
処理方法(b).エクセルVBAを利用する。
本ページではVBAでの利用を対象にする。
処理方法(C).エクセルVBA以外の言語も利用する。
本ページでは、これも対象。後述する通信コンポーネント等は、こちら(だと思う)。
対象のWEBページ(サイト)のデータ形式(ファイル形式)ごとにやり方が異なる
(い)HTMLファイル
(ろ)XML
(は)画像ファイル
(に)その他もろもろのページ(HTMLだが処理が面倒なページ、javascriptなどで動的なページ)
(い) VBAで「HTMLで書かれたWEBページ」を扱う。
流れ
1.HTMLをダウンロード
2.ダウンロードしたファイルを処理
STEP1.HTMLファイルをダウンロードする、WEBページのデータをエクセルファイルに取り込む
ダウンロードするには、いくつか方法がある。
方法イ.VBAでIEを操作する。
方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。)
方法イ.VBAでIE(Internet Explorer)を操作し、WEBページのデータをエクセルファイルに取り込む(IEにWEBページを表示させ、コピペする。)
■IEを操作する方法は、後述する通信コンポーネントを使う方法と比較した場合の良い点悪い点。
良い点:
- 扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。)
- 直感的にわかりやすい
悪い点:処理に時間がかかる。
方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。)
良い点:一旦書き上げてしまえば、VBAよりは処理が早い。
悪い点:
- プログラムが複雑になりやすい。(たぶん。)
- 扱えないサイトがある。(cookieの処理など。)
方法ハ.VBAでWebBrowserコントロールを扱う。
STEP2.ダウンロードしたデータを処理する。
データ処理(解析)方法1. ダウンロードデータをXPATHで処理
データ処理(解析)方法2. ダウンロードデータを正規表現で処理
データ処理(解析)方法3. ダウンロードデータをCSSセレクタで処理
(ろ). VBAから「XML(XTHML,XBRL)」を扱う。
(は).画像ファイルなどのファイルを扱う。
(に). VBAで扱うのが面倒なページ
面倒パターンA.FRAMEのあるWEBページ
面倒パターンB.URLは同一なのに表示が変化するWEBページ (クリックでページ遷移など)
スクリプト言語javascript
ログイン等が必要なページ
ページフッタ
このページの1階層上のページ
このページの1階層下のページ
このページに含まれるタグ
このページへのアクセス数
今日: -
昨日: -
これまで合計: -
最終更新:2012年04月13日 11:21