【VBA】Webスクレイピング-06:取得した要素からテキストを抜き出す

VBAで実践するWeb操作 VBA

VBAでWEBスクレイピングの第6弾です。今回で基本的な内容についての解説はひと通り終わることになります。

前回記事はこちら

それでは、前回の続きとして、idやclass等で抜き出したタグ含みの情報からどうやって欲しいテキストを抽出していくかについて解説していきましょう。

テキストが格納されているプロパティ

取得した「要素」に含まれている「プロパティ」にテキストが格納されています。
プロパティは、以下の4種類があります。

  • outerHTML
    要素と、要素に含まれるHTML全体
  • outerText
    要素と、要素に含まれるHTML全体の中で、画面にテキストとして表示される部分
  • innerHTML
    要素に含まれるHTML全体(要素そのものは含まない)
  • innerText
    要素に含まれるHTML全体の中で、画面にテキストとして表示される部分(要素そのものは含まない)

サンプルコード

それぞれのプロパティを表示してみましょう。
前回と同様に、WikiPediaの「VBA」というページにアクセスしてみます。
https://ja.wikipedia.org/wiki/Visual_Basic_for_Applications

「id=”cite_note-13″」の要素を取得し、前述の4つのプロパティを表示します。。

Option Explicit


Sub getElm()
    
    '■1.前処理
    'IEのオブジェクトを作成
    Dim ie As InternetExplorer
    Set ie = New InternetExplorer
    
    'IEが開かないように設定
    ie.Visible = False


    '■2.本処理
    '指定のURLを開く
    ie.Navigate ("https://ja.wikipedia.org/wiki/Visual_Basic_for_Applications")
        
    'ページの読み込みが完了するまで待つ
    Do While ie.readyState <> READYSTATE_COMPLETE
        'OSに制御を戻す
        DoEvents
    Loop
             
    
    Dim elmById As Object
    Set elmById = ie.Document.getElementById("cite_note-13")
    Debug.Print ("=====outerHTML=====")
    Debug.Print (elmById.outerHTML)
    Debug.Print ("=====outerText=====")
    Debug.Print (elmById.outerText)
    Debug.Print ("=====innerHTML=====")
    Debug.Print (elmById.innerHTML)
    Debug.Print ("=====innerText=====")
    Debug.Print (elmById.innerText)
            
      
    '■3.後処理
    ie.Quit
    Set ie = Nothing
            
End Sub

イミディエイトウィンドウに、以下のように出力されていれば、取得成功です。

=====outerHTML=====
<li id="cite_note-13"><b><a href="#cite_ref-13">^</a></b> <span class="reference-text"><a class="external text" href="https://support.office.com/ja-jp/article/a97c09d2-c082-46b8-b19f-e8621e8fe373" rel="nofollow">Excel のマクロのセキュリティ設定を変更する - Excel</a></span>
</li>
=====outerText=====
^ Excel のマクロのセキュリティ設定を変更する - Excel 
=====innerHTML=====
<b><a href="#cite_ref-13">^</a></b> <span class="reference-text"><a class="external text" href="https://support.office.com/ja-jp/article/a97c09d2-c082-46b8-b19f-e8621e8fe373" rel="nofollow">Excel のマクロのセキュリティ設定を変更する - Excel</a></span>

=====innerText=====
^ Excel のマクロのセキュリティ設定を変更する - Excel 

各プロパティの取得内容比較

outerHTMLを基準に、各プロパティの表示内容は以下のようになります。
・「outer」は要素自体を含み、「inner」は含まない
・「HTML」はHTMLそのものを表示し、「Text」は表示用のテキスト部のみを表示する。

Webスクレイピングについて

Webスクレイピングの基本的な内容は以上となります。

意外と簡単に取得できることがお分かりいただけたかと思います。

タナイ
タナイ

今回解説した内容は、あくまでHTMLデータの操作がベースのため、Web開発でよく使われるJavaScriptなどでも十分に通用する知識です。

Webサイトの利用規約に注意して、有効活用していただければ幸いです。

本格的にWeb開発を学ぶなら

VBAだけでなく、HTML自体だったり、CSS、JavaScriptといったWeb開発系言語を独学するならUdemyがオススメです!

ある程度プログラミングの知識がある人は、他の言語の学習も応用が効くのでビデオ学習の効率はめちゃくちゃ良いと思います。

タナイ
タナイ

私も、新しい技術にキャッチアップしたいときはビデオ講座を購入して倍速再生で高速学習しています。

Udemyの登録はこちら!

ウェブ開発入門完全攻略コース – プログラミング をはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!

Web開発が網羅的に解説されているので初期学習に超オススメです。私も受講しました。

コメント

タイトルとURLをコピーしました