【エクセルVBAでIE操作】HTMLタグと要素そしてドキュメントの取得

HTML

photo credit: HTML Tag via photopin (license)

みなさん、こんにちは!
たくさん勉強すべきことがあってひーひー言ってますタカハシ(@ntakahashi0505)です。

初心者向けエクセルVBAでIEを操作するシリーズの第2回目です。

VBAやHTMLの知識があまりなくとも、この通りやればなんとなくはできるように書き進めていきたいと思います。

さて、前回はこちらの記事で、VBAからIEを操作するためのセッティングと実際にIEでページを開いてみるところまで進めました。

【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
エクセルVBAでInternetExplorerを操作するシリーズの導入編です。今回はIEを操作するときに最初にすべきセッティングと実際にWEBページを開く動作確認までをやってみたいと思います。

今回は次のステップとして、HTMLについて簡単に説明をしつつ開いたページのHTMLドキュメントを取得する方法についてお伝えします。

本格的にWEBスクレイピングするまでもう少しだけかかりますが、お付き合いくださいませ。

どうぞよろしくお願いします!

スポンサーリンク

前回のおさらい

前回作ったプログラムはこちらでした。

Sub MySub()
    
    Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    
    objIE.Visible = True
    objIE.Navigate "https://tonari-it.com/"
    
End Sub

IEオブジェクト変数を用意して、新規IEオブジェクトをセットして、IEを表示して、指定URLのページを開くという内容でした。

今回はせっかく開いたページからHTMLドキュメントを取得しますが、まずこのHTMLとは何かについて簡単に説明をしたいと思います。

HTMLとは何かについて簡単に説明します

WEBスクレイピングをするのであれば、そのWEBページがどのような作りになっているかというのを調べる必要があるのですが、その際にWEBページを作るための言語であるHTMLについての若干の知識が必要になります。

HTMLとは、Webページを記述するためのマークアップ言語。文書の論理構造や表示の仕方などを記述することができる。
(引用:IT用語辞典

具体的には例えばテキストエディタで


    
        サンプルページ
    
    
        

見出し

段落 リンク

と記述して保存したファイルをブラウザにドラッグすると

HTML表示サンプル

と表示されます。

HTMLタグと要素(エレメント)

ご覧の通りHTMLは「<タグ>何か書く」といったようにテキストをタグで挟むスタイルで書かれていまして、このタグで挟まれたひと塊を要素(エレメント)と言います。

上記の例でいうと、「<h2>未題</h2>」がh2要素、「<a href=”~”>リンク</a>」がa要素となります。

さらに大きなくくりでいうと、「<html>~</html>」もその間のたくさんのタグや文字列群もひっくるめて一つの要素と言えます。

ブラウザはこのHTMLタグや要素などを解釈して、本来見せるべきWEBページの形に変換して表示するアプリケーションと言えます。

IEを操作してWEBページから情報を取得する場合はまずこのhtmlドキュメントをゴソっと取得するところから始まり、このhtmlドキュメントの中の必要な要素を都度取得したり、取得して加工したりという流れになります。

なお、タグにはそこそこの数の種類があってそれぞれの機能があります。それぞれが出現した暁にはそれぞれが何者なのかを知る必要があるので、そのあたりも都度説明を加えながら進めますね。

IEオブジェクトで開いたページのHTMLドキュメントを取得

では開いたIEからそのページのHTMLドキュメントを取得してみましょう。

まず、HTMLDocumentというHTMLドキュメントを表すオブジェクトを取得することになるので、そのオブジェクト型で変数を宣言します。

Dim オブジェクト変数 As HTMLDocument

HTMLドキュメントを取得するには、InternetExplorerオブジェクトのDocumentプロパティを使います。

Set オブジェクト変数 = InternetExplorerオブジェクト.Document

実際のプログラムではこのように書けばOKです。

Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.Document

WEBページのタイトル名を取得

では実際にHTMLドキュメントを取得できたかを確認すべく、WEBページのタイトル名を取得してみましょう。

そのWEBページのタイトル名を取得する際は、そのHTMLドキュメントに対してTitleプロパティで取得できます。

<

div class=”information”>
HTMLDocumentオブジェクト.Title

これを使って、取得したHTMLドキュメントのタイトル名をDebug.Printしてみましょう。

Sub MySub()
    
    Dim objIE As InternetExplorer
    Set objIE = New InternetExplorer
    
    objIE.Visible = True
    objIE.Navigate "https://tonari-it.com/"
    
    Dim htmlDoc As HTMLDocument
    Set htmlDoc = objIE.Document
    
    Debug.Print htmlDoc.Title
    
End Sub

ではこれを実行してみますと…

オートメーションエラー

おやおや…いやーな感じなエラーが出てしまいました。

が、問題ありません。想定内です。理由は明確で上記プログラムに間違いはありません。

しかし、ちょっと長くなってしまいそうなので、この理由については次回お伝えできればと思います。すみません。

まとめ

今回はWEBスクレイピングする際に知っておくべきHTMLの簡単な説明とHTMLドキュメントの取得の方法についてお伝えしました。

HTMLタグや要素といった考え方は、VBAでIEを操作していく上で今後もさんざん出てくる概念ですので、よく理解しておいて頂ければと思います。

今回はエラーが出てしまいましたが、全く問題ありません。

次回の記事でIEの読み込み待ちの処理を入れることで解消をしていきたいと思います。

429 Too Many Requests

どうぞ合わせてご覧下さい!

連載目次:エクセルVBAでIEを操作してWEBスクレイピング

IEを操作してWEBページのデータを取得して、エクセルのデータとして取り込む、つまりWEBスクレイピングをエクセルVBAで実現します。各種WEBページを課題として様々なデータの取得の仕方を解説していきたいと思います。

  1. 【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
  2. 【エクセルVBAでIE操作】HTMLタグと要素そしてドキュメントの取得
  3. 【エクセルVBAでIE操作】ブラウザの読み込み待ちをしないとダメなのです
  4. 【エクセルVBAでIE操作】ページ内のリンク先URLを全部取得する
  5. 【エクセルVBAでIE操作】ディスクリプションなどの要素をname属性でGetする
  6. 【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetする
  7. 【エクセルVBAでIE操作】WEBページのテーブル要素を自動で取得する方法
  8. 【エクセルVBAでIE操作】WEBページのテーブル要素からセルのデータを取り出す方法
  9. 【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
  10. 【エクセルVBAでIE操作】検索結果一覧から記事タイトルを取得する方法
  11. 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
  12. 【エクセルVBAでIE操作】ページャーをめくって複数ページからデータを取得する
  13. 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする
  14. 【エクセルVBAでIE操作】name属性を利用して画像ボタンをクリックする
  15. 【エクセルVBAでIE操作】alt属性・src属性を利用して画像ボタンをクリックする

連載目次:データ一覧から請求書を自動で作る

お仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。
  1. 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
  2. 【初心者向けエクセルVBA】ワークシートをオブジェクト名で取り扱う方法
  3. 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
  4. 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
  5. 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
  6. 【初心者向けエクセルVBA】セル範囲を一気にまとめてコピーする方法
  7. 【初心者向けエクセルVBA】ワークシートのデータのある範囲だけをピッタリ取得する方法
  8. 【初心者向けエクセルVBA】セル範囲の平行移動をする方法・リサイズをする方法
  9. 【初心者向けエクセルVBA】日付データから年・月・日を取り出す
  10. 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
  11. 【初心者向けエクセルVBA】For~Next文でセル範囲を一行ずつ移動させる
  12. 【初心者向けエクセルVBA】セル範囲のクリア~ClearContentsメソッドとClearメソッド
  13. 【初心者向けエクセルVBA】ワークシート・セルを選択する方法の色々について
  14. 【初心者向けエクセルVBA】入力ダイアログを表示するInputBoxメソッドの使い方
  15. 【初心者向けエクセルVBA】日付データから月末日と翌月末日を自動算出する
  16. 【初心者向けエクセルVBA】ワークシートをコピーする方法とそのシート名を変更する方法
  17. 【初心者向けエクセルVBA】オブジェクトを変数にセットして取り扱う方法
  18. 【初心者向けエクセルVBA】Openメソッドで新たなブックを開く方法
  19. 【初心者向けエクセルVBA】現在マクロを書いているブックのフォルダパスを取得する
  20. 【初心者向けエクセルVBA】開いたブックとそのワークシートをオブジェクト変数にセットする
  21. 【初心者向けエクセルVBA】ワークブックを別名で保存して閉じる方法
  22. 【初心者向けエクセルVBA】取引先別に請求書を作成するマクロを作る
タイトルとURLをコピーしました