みなさん、こんにちは!
たくさん勉強すべきことがあってひーひー言ってますタカハシ(@ntakahashi0505)です。
初心者向けエクセルVBAでIEを操作するシリーズの第2回目です。
VBAやHTMLの知識があまりなくとも、この通りやればなんとなくはできるように書き進めていきたいと思います。
さて、前回はこちらの記事で、VBAからIEを操作するためのセッティングと実際にIEでページを開いてみるところまで進めました。
今回は次のステップとして、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は「<タグ>何か書く」といったようにテキストをタグで挟むスタイルで書かれていまして、このタグで挟まれたひと塊を要素(エレメント)と言います。
上記の例でいうと、「<h2>未題</h2>」がh2要素、「<a href=”~”>リンク</a>」がa要素となります。
さらに大きなくくりでいうと、「<html>~</html>」もその間のたくさんのタグや文字列群もひっくるめて一つの要素と言えます。
ブラウザはこのHTMLタグや要素などを解釈して、本来見せるべきWEBページの形に変換して表示するアプリケーションと言えます。
IEを操作してWEBページから情報を取得する場合はまずこのhtmlドキュメントをゴソっと取得するところから始まり、このhtmlドキュメントの中の必要な要素を都度取得したり、取得して加工したりという流れになります。
なお、タグにはそこそこの数の種類があってそれぞれの機能があります。それぞれが出現した暁にはそれぞれが何者なのかを知る必要があるので、そのあたりも都度説明を加えながら進めますね。
IEオブジェクトで開いたページのHTMLドキュメントを取得
では開いたIEからそのページのHTMLドキュメントを取得してみましょう。
まず、HTMLDocumentというHTMLドキュメントを表すオブジェクトを取得することになるので、そのオブジェクト型で変数を宣言します。
HTMLドキュメントを取得するには、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の読み込み待ちの処理を入れることで解消をしていきたいと思います。
どうぞ合わせてご覧下さい!
連載目次:エクセルVBAでIEを操作してWEBスクレイピング
IEを操作してWEBページのデータを取得して、エクセルのデータとして取り込む、つまりWEBスクレイピングをエクセルVBAで実現します。各種WEBページを課題として様々なデータの取得の仕方を解説していきたいと思います。
- 【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
- 【エクセルVBAでIE操作】HTMLタグと要素そしてドキュメントの取得
- 【エクセルVBAでIE操作】ブラウザの読み込み待ちをしないとダメなのです
- 【エクセルVBAでIE操作】ページ内のリンク先URLを全部取得する
- 【エクセルVBAでIE操作】ディスクリプションなどの要素をname属性でGetする
- 【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetする
- 【エクセルVBAでIE操作】WEBページのテーブル要素を自動で取得する方法
- 【エクセルVBAでIE操作】WEBページのテーブル要素からセルのデータを取り出す方法
- 【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
- 【エクセルVBAでIE操作】検索結果一覧から記事タイトルを取得する方法
- 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
- 【エクセルVBAでIE操作】ページャーをめくって複数ページからデータを取得する
- 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする
- 【エクセルVBAでIE操作】name属性を利用して画像ボタンをクリックする
- 【エクセルVBAでIE操作】alt属性・src属性を利用して画像ボタンをクリックする
連載目次:データ一覧から請求書を自動で作る
お仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。- 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
- 【初心者向けエクセルVBA】ワークシートをオブジェクト名で取り扱う方法
- 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
- 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
- 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
- 【初心者向けエクセルVBA】セル範囲を一気にまとめてコピーする方法
- 【初心者向けエクセルVBA】ワークシートのデータのある範囲だけをピッタリ取得する方法
- 【初心者向けエクセルVBA】セル範囲の平行移動をする方法・リサイズをする方法
- 【初心者向けエクセルVBA】日付データから年・月・日を取り出す
- 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
- 【初心者向けエクセルVBA】For~Next文でセル範囲を一行ずつ移動させる
- 【初心者向けエクセルVBA】セル範囲のクリア~ClearContentsメソッドとClearメソッド
- 【初心者向けエクセルVBA】ワークシート・セルを選択する方法の色々について
- 【初心者向けエクセルVBA】入力ダイアログを表示するInputBoxメソッドの使い方
- 【初心者向けエクセルVBA】日付データから月末日と翌月末日を自動算出する
- 【初心者向けエクセルVBA】ワークシートをコピーする方法とそのシート名を変更する方法
- 【初心者向けエクセルVBA】オブジェクトを変数にセットして取り扱う方法
- 【初心者向けエクセルVBA】Openメソッドで新たなブックを開く方法
- 【初心者向けエクセルVBA】現在マクロを書いているブックのフォルダパスを取得する
- 【初心者向けエクセルVBA】開いたブックとそのワークシートをオブジェクト変数にセットする
- 【初心者向けエクセルVBA】ワークブックを別名で保存して閉じる方法
- 【初心者向けエクセルVBA】取引先別に請求書を作成するマクロを作る