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がオススメです!
ある程度プログラミングの知識がある人は、他の言語の学習も応用が効くのでビデオ学習の効率はめちゃくちゃ良いと思います。
私も、新しい技術にキャッチアップしたいときはビデオ講座を購入して倍速再生で高速学習しています。
ウェブ開発入門完全攻略コース – プログラミング をはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!
コメント