トップページ > windows > microsoft office > EXCEL > VBA > エクセルでWEBサイトのデータを扱う

■最終更新日時 2011年のいつか ここを編集



「WEBサイトのデータを、そのまま、または必要な一部分を抜出(取得)してエクセルに貼り付けたい。」というとき用のメモ。
いわゆる、スクレイピング、スパイダリングをエクセル(VBA)でやってやろうという話。
なお、スクレイピング関連用語の詳細や、他のプログラミング言語でデータ取得する方法は、別ページ にまとめている。



■目次

■本文

■ページの概要

「WEBサイトのデータを、そのまま、または一部を抜き出してエクセルに貼り付けたい。」というとき用のメモ。

ここのページでは、エクセルの機能を利用する方法をまとめている。
関連ページ: VBA以外も利用してWEBから情報の抜き出し(スクレイピング、スパイダリング)

想定シーン

  • 株取引を初めとしたWEBを使ったEDI(Electronic Data Interchange )のフローの一部
  • 大量の情報収集

VBAでスクレイピングしている具体例

知識の無い状態で見ても理解不能かと思いますが。
App StoreからiPhoneアプリ情報を取得するExcel VBAサンプル - iPhone.goodegg.jp 2009-09-21



エクセルでの処理方法

エクセルで処理する方法を大きくわけると、

処理方法(a).VBA他のプログラム言語を利用しない。

データー-外部データの取り込み-新しいwebクエリ
コメント: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など。)

 wininet,winhttp(Windows HTTP Services),XMLHttpなど。
Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典
API関数と表記してあるサイトもある。

良い点:一旦書き上げてしまえば、VBAよりは処理が早い。
悪い点:
  • プログラムが複雑になりやすい。(たぶん。)
  • 扱えないサイトがある。(cookieの処理など。)



方法ハ.VBAでWebBrowserコントロールを扱う。


詳細不明。あまりメリット感じられないので、深堀しない。
メリットデメリットをまとめたページ:【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★


STEP2.ダウンロードしたデータを処理する。

データ処理(解析)方法1. ダウンロードデータをXPATHで処理

勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XPATH
HTMLに関しては、XPATH式をVBAで適用するのは難易度が高く、手間がかかる。(javascriptの知識が必要)

データ処理(解析)方法2. ダウンロードデータを正規表現で処理


データ処理(解析)方法3. ダウンロードデータをCSSセレクタで処理



(ろ). VBAから「XML(XTHML,XBRL)」を扱う。


(は).画像ファイルなどのファイルを扱う。


(に). VBAで扱うのが面倒なページ

面倒パターンA.FRAMEのあるWEBページ

Frame プロパティ
サイト名:MSDN
frames Collection
サイト名:MSDN



フレームの属性の見つけ方(英語)。機械翻訳の日本語もあるが、翻訳がお粗末すぎて余計にわからん。
How To Find the src Attribute of a Frame Element


面倒パターンB.URLは同一なのに表示が変化するWEBページ (クリックでページ遷移など)

スクリプト言語javascript




ログイン等が必要なページ









ページフッタ

このページの1階層上のページ

このページの1階層下のページ

このページに含まれるタグ

このページへのアクセス数

今日: -
昨日: -
これまで合計: -
最終更新:2012年04月13日 11:21