- ベストアンサー
ページソースからのURL抽出
VBでページソースにあるURLを全て抽出したいと考えています。 どのようにすれば良いか教えてください。 サンプルコードがあると助かります。 具体的には、以下の通り。 (1)ウェブページのソースを読み込む (2)読み込んだソースを1行ずつ探索し<a href="****">の****の部分を全て読み込んでいく (3)ExcelのURL欄に順に入力していく (4)URL一覧の出来上がり よろしくお願いします。
- みんなの回答 (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
お礼
ご指摘等々含めてありがとうございました。早速試してみたいと思います。