【VBA】Google検索結果画面の情報を取得する【IEを操作する】

VBA

VBAではシート内だけではなく、ネットの情報も扱うことができます。

そして、その方法はいくつかありますが、本記事ではIE(Internet Explorer)を操作したやり方を紹介します。

 

また、本記事のゴールは検索エンジンで検索したのちの検索結果画面の情報を取得し、その情報をシートに書き込むとなります。

 

では、さっそく解説していきます。

スポンサーリンク



【前準備】検索結果のHTMLの確認

まず、ここでは検索結果の情報を取得するための知識を紹介します。

ここでの内容はザックリ理解してもらえればと思います。

※本記事では基本的なHTMLの説明は長くなるので省略します。

検索結果画面のURLを確認

まずは「取得したいキーワードを検索エンジンに入力して検索してください。

※本記事では「ボクログ VBA」と検索しています。

 

そうすると下のような検索結果が表示されます。

そして、検索結果画面のURLは「https://www.google.co.jp/search?q=〇〇(検索ワード)」という形になります。

※検索ワードが複数ある場合には、そのワードの間に「+」が入力される。

検索結果画面のHTMLを確認

次にネット上で表示された情報を取得する際には『HTML』を確認する必要があります

その本記事で重要な確認方法の操作は下の通りです。

1.検索結果画面を表示した状態でキーボードの「F12」(もしくは「Ctrl+Shift+i」)を押します。

そうすると画面の右側に、その画面の構成であるHTMLが表示されます。

2.「表示された右側の画面を一度クリック」し、そのあとに「Ctrl+F」を押してください。

そうすると、右下に「ページ検索欄」が表示されるので、そこに「”g”」と入力してください。

 

その検索結果では「 “g”」部分に色が付きます。

その「”g”」が含まれた一行にカーソルをあてると、左側の検索結果画面のその一行に関連するページに色が付きます

 

 

加えて、HTMLの「class = “g”」の全ては検索結果画面に表示されたページ情報に関連していることが分かるかと思います。

 

この知識は後にページの情報を取得するときに使うので、覚えておいてください。

 

HTML上の値を取得する方法

HTML上の値は主に「タグ・クラス・id」の3つで取得できます。

タグ:.getElementsByTagName(tag名)】

 例:見出し(h2 h3 h4)をよく使う 

 

クラス:.getElementsByClassName(class名)】

例:<div class=”〇〇“>

 

id:.getElementById(id名)】

例:<div class=”〇〇” id=”△△“>

 

 

Google検索結果画面の情報を取得する

では、さっそく本題である「検索エンジンで検索したのちの検索結果画面の情報を取得し、その情報をシートに書き込む」の解説になります。

 

本記事では参照設定をしない方法でやっていきます。

ちなみに参照設定する場合は下を追加してください。

・Microsoft HTML Object Library

・Microsoft Internet Controls

 

ここでは下のように順を追って説明していきます。

1.IEを表示(起動)する

2.Googleの検索画面を表示する

3.検索結果画面の特定のデータを取得する

4.検索結果の一番目のページの「URL・タイトル・説明」を取得する

5.検索結果の全てのページの「URL・タイトル・説明」を取得する

6.IEを閉じる

 

では、さっそく解説をしていきます。

IEを表示(起動)する

まず、ネットにアクセスするためのIE(Internet Explorer)の起動です。

下がIEを起動するためのコードになります。

5行目でInternetexplorer.Applicationをインスタンス化して、コード上で扱うことができるようにしています。

そして、6行目で上のオブジェクトのVisibleプロパティでIEを表示(True)にしています。

 

上のコードを実行すると、下のような真っ新なIEが表示されます。

 

Googleの検索画面を表示する

次にGoogleで任意のワードを検索したときの結果画面の表示です。

14行目でIEオブジェクトのNavigateメソッドで指定したURLをIEで表示させています。

上でも説明しましたが、検索エンジンで入力されたワードは「https://www.google.co.jp/search?q=ボクログ+VBA」とURLに追加されるので、コード上でも同様の記述にしています。

 

上のコードを実行すると下のような検索結果画面が表示されます。

検索結果画面の特定のデータを取得する

今回は検索結果画面のヒットしたページの情報を取得します。

上の章の「HTML上の値を取得する方法」でHTMLの情報を取得するときには『タグ・クラス・id』を使うと説明しました。

その知識を使います。

ここでは検索結果画面に表示されている9つのページの情報を取得するために『class=”g”』で取得しています。

※上の章の「検索結果画面のHTMLを確認」でも書いたが、ヒットしたページの情報は『class=”g”』で括られている。

そして、最終的に28行目でpageData変数には9ページ分の情報が格納されています

 

検索結果の一番目のページの「URL・タイトル・説明」を取得する

ここでは一番上のページのURL・タイトル・ページ説明を取得して確認していきます。

33(タイトル)・36(URL)・39(ページの説明)行目で特定の情報を取得しています。

上のコードではページの情報を取得する際の記述では「pageData(0)としています。

この変数の中身は取得したページ情報はインデックス0から始まり、インデックス9までとなっています。

つまり、「このインデックス数を変えることで他のページの情報も取得できる」ということです。

 

そして、今回はインデックス0に格納された要素である1番上のページの情報を取得しています。

 

ちなみに上のコードを実行すると下のようにイミディエイトウィンドウに表示されます。

 

検索結果の全てのページの「URL・タイトル・説明」を取得する

上では一番上のページの情報取得をします。

ここでは、最後に検索結果画面全てのページの「URL・タイトル・ページの説明」を取得し、シートに書き込むまでをやってみます。

41~43行目で検索結果画面のヒットしたページの情報を取得しています。

そして、今回はFor Eachを使って、オブジェクト内の値を1つずつ取得できるようにしています。

加えて、オブジェクトの要素分、39~49行の間の処理(情報取得とシートへの書き込み)を繰り返します。

※For Eachが分からない方は『For文の使い方』を読んでみてください。

 

上のコードを実行すると下のような結果が得られます。

 

IEを閉じる

最後に開いたIEを閉じるて終了になります。

53行目で初めに開いたIEを閉じています。

加えて、54行目で一応IEオブジェクトが入った変数にNothingを代入しておきます。

 

コレで「検索エンジンで検索したのちの検索結果画面の情報を取得し、その情報をシートに書き込む」は終わりになります。

 

〇おすすめのVBA参考書ランキング!

1位

2位

3位

Excel VBA 脱初心者のための集中講座パーフェクトExcel VBAExcelVBA 実戦のための技術
初心者~中級者中級者初心者~中級者
【初心者が手に取るべき参考書】

・「書籍+動画」で圧倒的に理解しやすい入門書になっている。

・丁寧で詳しい解説でボリューム感がある。

【より深い理解をしたい方にお勧めな参考書】

・テーマに対して丁寧な解説・適度な深さで解説されている。

・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。

【入門書と一緒に買うべき参考書】

・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。

・実践的で効果的なコードの書き方が理解できる。

【読んでみた一言】
正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。
【読んでみた一言】
深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。
【読んでみた一言】
基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。

¥2,794円
amazonで確認!

¥3,608円
amazonで確認!

¥2,640円
amazonで確認!

スポンサーリンク