« 【株】 05/02 +59620 日経△282.4 | トップページ | 【Excel VBA備忘ログ】IE7.0の自動更新を禁止する »

【Excel VBA備忘ログ】フレームを持つサイトの構造を調べるには(修正)

Excel VBAを使ったスクレイピング技集です。

フレームを使用しているwebサイトをExcelに取り込んで解析し、フレーム構造を取得できます。フレームは入れ子に出来るため、再帰的にタグ解析を行うのがミソです。

0)準備

Dim IE as object
Dim frame as FramesCollection
Dim url as string
Set IE = CreateObject("InternetExplorer.application")
IE.Navigate url

urlには、読込みたいサイトのURLを指定します。

1)フレーム数のカウント方法

IE.document.frames.length

指定したURL直下のフレーム数が取得できます。3つなら3を返します。0ならフレームを使用していないとい うことです。

2)フレームの名前

まずは、以下のコードでフレームオブジェクトを取得しておきます。1つのhtmlにフレームが1つか複数かで文法が異なるので注意が必要です。

フレームが複数ある場合は以下です。

Set frame = IE.document.frames

フレームが1つの場合は以下です。

frame(n).Name
または
frame.Name

※nには0~IE.document.frames.length-1が指定可

3)指定したフレームの中身の取得

frame(n).document.body.innerText
frame(n).document.body.innerHTML

4)孫フレームの探索

子フレームに対し、frame(n).frames.lengthで再度フレーム数をチェックします。1以上であれば孫フレームが存在するということです。以降、再帰的に調べることで深い階層でも調べることができます。

※孫フレームが存在する場合、子フレームのinnerTextが空の事が多いようです(必ずしもそうではない)。

« 【株】 05/02 +59620 日経△282.4 | トップページ | 【Excel VBA備忘ログ】IE7.0の自動更新を禁止する »

ExcelVBA」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/36872/20770702

この記事へのトラックバック一覧です: 【Excel VBA備忘ログ】フレームを持つサイトの構造を調べるには(修正):

« 【株】 05/02 +59620 日経△282.4 | トップページ | 【Excel VBA備忘ログ】IE7.0の自動更新を禁止する »