• ベストアンサー

ページソースからのURL抽出

VBでページソースにあるURLを全て抽出したいと考えています。 どのようにすれば良いか教えてください。 サンプルコードがあると助かります。 具体的には、以下の通り。 (1)ウェブページのソースを読み込む (2)読み込んだソースを1行ずつ探索し<a href="****">の****の部分を全て読み込んでいく (3)ExcelのURL欄に順に入力していく (4)URL一覧の出来上がり よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 VB or VB(A) ? 開発環境が不明ですよ。 質問の内容ならたいしてソースは変わらないですけど、ちゃんと 明記した方が良いですよ。Excel に出力するなら VBA でって前提 で回答します。 > (1)ウェブページのソースを読み込む とありますが、リンク抽出が目的であるならソースを読み込んで テキスト解析するより、DOM を利用した方が簡単です。 DOM を取得する方法はいくつかありますけど、一番簡単な IE を 使った例。 Sub sample()   Dim ie  As Object ' InternetExplorer   Dim dom  As Object ' HTMLDocument   Dim anc  As Object ' HTMLAnchorElement   Dim sAddr As String      Const IE_READYSTATE_COMPLETE As Long = 4&      Set ie = CreateObject("InternetExplorer.Application")   ie.Visible = True      ie.navigate "ここに目的のURL"   While ie.Busy Or ie.readyState <> IE_READYSTATE_COMPLETE     DoEvents   Wend      Set dom = ie.document   For Each anc In dom.links ' // or dom.getElementsByTagName("a")     sAddr = anc.href     ' // javascript:void(0) 等の除去     If InStr(LCase$(sAddr), "javascript") = 0 Then       ' // 出力(仮にイミディエイトウインドウ)       Debug.Print sAddr     End If   Next      Set dom = Nothing   Set ie = Nothing End Sub 要は、For Each ループでアンカー要素を回せばよいわけで、DOM の取得が できるのであれば、その方法は何でもよいです。 丸投げというわけではないのでしょうが、結果としてそのようになって しまうのは本意ではありませんので、端折った回答にしておきます。 Excel のセルへ書き出す方法は、ご自分で考えてください。 最後に、IE 操作と DOM オブジェクトについて参考となる定番ページを 紹介しておきます。 [三流君VBAでIE操作] http://www.ken3.org/cgi-bin/group/vba_ie.asp

mickmick2
質問者

お礼

ご指摘等々含めてありがとうございました。早速試してみたいと思います。

関連するQ&A

専門家に質問してみよう