• ベストアンサー

ページソースからの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

  • VBAでWEBページのURL抽出について

    エクセルのVBAにおいてWEBページのURLを抽出するマクロを考えております。 具体的に言うと、下記のようなwebページのタグがある中でhrefで参照しているURLを抽出したいと考えております。 <a class="" href="">あいうえお</a> GetelementByClassNameを使うことで文言の抽出はできるのですが、リンク先の抽出はできないのでしょうか?

  • HPのソースのURL部分だけを抽出したい

    下記のようなソースがあるとします。 <TD><A href="http://www.webconnection.jp/micro/slink/slink.cgi" target=_blank>Web Republick</A></TD> <TD><A href="http://www.webconnection.jp/micro/slink/slink.cgi?mode=form" この中で”で囲まれているURL部分だけを抽出して一覧を作るにはどうしたらいいでしょうか? ワードやエクセルに貼り付けてなんとかしようとしたのですが、うまくゆきません。 URLがたくさんあり、手動でコピペするには手間が多すぎます。 よい方法がありましたら、教えてください。 よろしくお願いします。

  • URL抽出

    指定したURLのソースから<A HREF="~">タグの"~"部分を抜き出してリスト化するようなURL抽出ツールを作りたいのですが、どのようにプログラムを書けばよいのかわからずに困っています。 わかるかた、回答のほどをよろしくお願いします。

  • WEBページ内のURLを抽出するJavaScript

    現在見ているホームページのURLを全て、 もしくは画像だけ等の条件付で抽出できる JavaScriptのサンプルスクリプトを教えてください。 ページのアドレスを入力するだけでOKなら 最高だと思うんですけど、その場合、 Perl等のサーバー側で動くプログラムが 必要だと思うんです。 希望としては、パソコン側で実行したいんです。 ソースプログラムをコピー&ペーストして、 実行ボタンを押すとリンクURLだけ抽出されて 表示されるようなスクリプトはありませんか。 よろしくお願いします。

  • WEBページ 抽出

    WEBページの選択範囲のソースコードを抽出したいのですが、 どのようにすればいいのかわかりません。 最終的には、選択範囲のソースコードを抽出し、エディタ編集できるようにして、一つのHTMLファイルとして再構成したいと考えているんですがどこから手をつけていけばいいかわからない状態です。 教えてください。お願いします。

    • ベストアンサー
    • HTML
  • エクセルVBAにてURLの抽出

    エクセルVBAのマクロを用いてテキスト(ソースコード)よりURLを取得したいと考えています。 <a href="**"> 左記の「**」を取得し、エクセル上に 一覧として出力するものを想定しています。 なお、ソース上にhrefのコードは複数存在するので、 それら全てを出力したいのです。 以下が出力希望例になります。 <a href="http://www.test.co.jp"> <script type="text/javascript"> <a href="http://www.test2.co.jp"> 出力結果 http://www.test.co.jp http://www.test2.co.jp 諸事情があり、テキストを読み込んでエクセル上に取得する形式でお願いしたいです。 すみませんが、よろしくお願いします。

  • PHPでHTMLソースから特定のURLを抽出したい

    PHPで外部サイトのHTMLソース内の特定のURLを取得するにはどうすればいいでしょうか? 具体的には楽天市場の個別商品ページのHTMLソースにあるレビューページのURLを抽出したいと思っています。 ttp://item.rakuten.co.jp/asagao/332/のHTMLソースから レビューページのURLのttp://review.rakuten.co.jp/item/1/229861_10000050/1.1/を取得するようなプログラムを作りたいと思っています。 自力で頑張ってみたもののPHP初心者のため、preg_matchや正規表現でお手上げ状態になってしましました。 プログラムのソースコードを教えていただけると助かります。 ご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • 一つの行にURLが複数ある場合の、URL抽出方法は?

    htmファイルの中から、リンクされたURL情報を抽出するのが今回の目的です。 ご相談したいのは、URL情報が一つの行中に複数ある場合の抽出方法です。 ちなみに「一つの行にある<a href>リンクが一つだけ」の場合ですと、正規表現 <a +href=('|\").*('|\") *> でURLデータを正しく抽出できるところまで来ています。 ですが一つの行にある<a href>リンクが2つ以上あった場合は、最長一致のルールに従って、うまく抽出できません。 具体的に申し上げると、 ケース1:<a href="www.hoge.htm">ほげ</a> <a href="www.hoge.htm"> が抽出できる。 ケース2:<a href="www.hoge.htm">ほげ</a><a href="www.hogehoge.htm">ほげほげ</a> <a href="www.hoge.htm">ほげ</a><a href="www.hogehoge.htm"> が抽出される。(本当は2つを別々に取り出したい)

  • QRコードからURLの抽出

    そのQRコードはあるWebページにジャンプさせるものなのですが、私が持っている携帯はQRコードに対応していないのでその機能が使えません。 そこで、QRコードからジャンプ先のURLを知りたいのですが、QRコードからURLを抽出することはできないものでしょうか? もし、できるのであれば、是非その方法を教えてください。ご教授宜しくお願いします。

  • フレームで開いたページのリンク抽出

    インラインフレーム、フレーム、新規ウィンドウなどでウェブページを開いてリンクを抽出するにはどうしたらよいのでしょうか? 試した方法は、親ファイルでiframe名.location.href="目的のURL"としインラインフレームでウェブページを開いた後、 http://blog.bulknews.net/mt/archives/001099.htmlのブックマークレットをiframe名.location.href="ブックマークレット"でリンク抽出しようとしたのですが、ブラウザはブックマークレットとして認識してくれず、「ページが表示できません」となってしまいます。 ただ、ウェブページではなくローカルに置いたファイルを開いたのち、同じくiframe名.location.href="ブックマークレット"すると上手く動作してくれるのですが…… ウェブページでもブックマークレットを動作させる方法、あるいは親ファイル内のjavascriptでブックマークレットに相当する動作をするjavascriptの書くなどがあればぜひ教えてください。

専門家に質問してみよう