VBA開発

VBAでIE操作「データ取得するinnerText/innerHTML/outerText/outerHTML」【エクセルマクロ】

VBAでIEを起動し任意のページまで遷移する方法をお伝えしました。
Webスクレイピングの本質、ホームページの情報を収集・抽出する方法をご説明します。

データ取得は4種類ある

プロパティ内容
innerText指定した要素のテキスト(指定タグを含まない)
outerText指定した要素のテキスト(指定タグを含む)
innerHtml指定した要素のHTMLを全て(指定タグを含まない)
outerHtml指定した要素のHTMLを全て(指定タグを含む)

画面表示されているテキストは、innerTextで取得

人間の目で確認が出来る内容(Webページの表示されている)をデータ取得したい場合は、
innerTextでデータを取得可能です。

'■サンプルコード
'■ID属性nav-searchのテキストデータを取得
objIE.document.getElementById(“nav-search”).innerText

'■Class属性testの1番目のテキストデータを取得
objIE.document.getElementById(“text”)(0).innerText

outerTextも設定としてはありますが、私はあまり使いません。
また、取得するデータは「innerText」 = 「outerText」だと考えています。

積極的に覚えなくていい知識
データ取得ではなく、HTMLにVBAからデータ書込をした場合は、
「innerText」=「テキスト部分のみの設定」ですが、
「outerText」=「テキストを囲む html タグも含めて取得する」とだけ認識ください。

HTMLを解析するなら、innerHtml OuterHtml

データを取得する(クロールする)というよりも、
VBA上で、IEデータを解析して、IEの次ページに遷移する場合が多いかもしれません。
※onclick要素を探す場合によく使うイメージです。

InnerHtmlでもOuterHtmlでもどちらでも構いません。
(違いは指定したタグが含まれるかどうかだけです)

//HTMLサンプル
<li>test</li>
'■VBAサンプルコード 
'■innerHtml→ test
objIE.document.getElementByTAGName(“li”)(0).innerHTML
'■outerHtml→ <li>test</li>
objIE.document.getElementByTAGName(“li”)(0).outerHTML 

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

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