インターネット上のリンク先のアドレスを取得するExcelVBAコード

スポンサーリンク

リンク先アドレス一覧の取得する

InternetExplorerを操作してネット上の情報を取得する場合、取得するまでのステップが多いと、一度リンク先のアドレス一覧を取得してからそれぞれのリンク先にアクセスして目的の情報を取り出す方がスムーズに動作することがあります。

今回は開いたWebページのリンクのアドレス一覧を取得するコードを紹介します。

リンク先のアドレス一覧表を作成するのはエラー処理対策に有効

IEを操作してたくさんの情報を収集するにあたって、1回の操作が煩雑になってくるとエラーが生じる可能性が高いです。
ネットの接続が一時的に悪くなったり、情報収集したいページを管理しているサーバーからエラーを返されたりするのがその代表です。

例えば

①検索文字を入力
→②表示されたリンクをクリック
→③移動したページから情報収集
→④元のページに戻る
→⑤最後のリンクまで②~④を繰り返す

のような①~⑤のステップを繰り返す場合、表示されたリンクをクリックして次のページが表示されるまできちんと待つVBAコードを用意しても、ネットの接続状況やサーバーの状態によってはきちんと動作しないことがあります。

途中で操作を中断しても後できちんと再開できれば問題ないのですが、ネットの情報の場合は常に情報が更新されているので中断・再開がうまくいかず、取り出したデータの一部が欠けてしまったり重複してしまうことがあります。

そういった場合には先にリンク一覧表を作成しておいて、その後それぞれのページに移動して情報を抽出するように2ステップに分割することでエラーを回避しやすくなります。

先ほどの例で言うなら

①検索文字を入力
→②表示されたリンクの一覧表を作成

の1ステップと

③作成した一覧表を元にページを開く
→④開かれたページから情報収集
→⑤最後のリンクまで③~④を繰り返す

の2ステップに分割することでエラーが少なく、後から見てわかりやすいプログラムにすることができます。

スポンサーリンク

リンク先のアドレス一覧表を作成するExcelVBAコード

Googleでの検索結果のページのリンク先を一覧表にするExcelVBAコードは以下のようになります。
A1セルに検索したい文字を入力してマクロを実行すると検索結果1ページ目のリンク先の一覧表が作成されます。

Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)

Sub Google検索結果のリンク先を一覧表にする()

Dim IE As Object
Dim Anchor As Object
Dim txtInput As Object
Dim Button As Object

’IEを起動して操作対象とする(変数IEに格納する)
Set IE = CreateObject(“InternetExplorer.application”)

IE.Visible = True ’IEの画面を表示する
IE.navigate (“https://www.google.co.jp/”) ’目的のサイトに移動する

Do While IE.Busy Or IE.readyState < READYSTATE_COMPLETE
DoEvents
Sleep 1
Loop
Sleep 3000

Set txtInput = IE.document.getelementByID(“lst-ib”)
txtInput.Value = Cells(1, 1) ’A1セルに記入された文字をGoogle検索

For Each Button In IE.document.getElementsByTagName(“input”) ’タグの種類が「input」のものを対象とする
If Button.Value = “Google 検索” Then ’値が「Google 検索」なら
Button.Click ’ボタンをクリックして
Exit For ’繰り返し処理を抜ける
End If
Next

Do While IE.Busy Or IE.readyState < READYSTATE_COMPLETE
DoEvents
Sleep 1
Loop
Sleep 3000

Dim i As Long
i = 1

For Each Anchor In IE.document.getElementsByTagName(“A”)
If InStr(Anchor, “google”) = 0 And InStr(Anchor, “http”) <> 0 Then
’Googleへの内部リンクを除外し、かつリンク先のアドレスがhttpでないもの(Javascriptなど)を除外する

Cells(i, 2) = Anchor ’B列にリンク先の一覧を記載する
i = i + 1 ’1行ずらす

End If
Next

End Sub

おすすめ書籍 amazonicon Amazon rakutenicon 楽天 Yahooicon Yahoo検索

コメント