• ベストアンサー

HTMLソースからURLだけを抜き出す方法を教えてください!

hersheの回答

  • hershe
  • ベストアンサー率55% (5/9)
回答No.4

#3のものです。 ごめんなさい。質問の答えになっていなかったですね。 >最初に検索で見つかった位置から次に見つかった位置まで >をどのように検索すればいいのかが分かりません。 これは、InStr関数を使用すればできます。 InStr([検索開始位置],文字列,検索文字) ※[検索開始位置]は省略可能です。省略すると1になります。 例)「<A HREF="xxx.html">」から「"」~「"」までを検索します。 '--------+---------+---------+---------+---------+---------+ Dim lngPosSt As Long Dim lngPosEnd As Long Const strText As String = "<A HREF=""xxx.html"">" '文字列の最初から「"」を検索 lngPosSt = InStr(strText , Chr(34)) '「"」が見つかった位置の一つ後ろから次の「"」を検索 lngPosEnd = InStr(lngPosSt + 1, strText , Chr(34)) '「"」~「"」までをメッセージに出力 MsgBox Mid(strText , lngPosSt, lngPosEnd - lngPosSt + 1) '--------+---------+---------+---------+---------+---------+ このようにすると検索できます。

fujiyama2002
質問者

お礼

ご回答いただきありがとうございます。 しかもこんなに詳細にご説明いただき とても助かります。 じっくり読んで試してみます。

fujiyama2002
質問者

補足

こんにちは。 教えていただいた方法を活用してコードを書こうと思ったのですが、 これがめちゃくちゃ難しいです。 とりあえずこんな感じで使わせていただきました。 Open na For Input As #fileno Do Until EOF(fileno) Line Input #fileno, aa GetATag = "" lngPosSt = InStr(StrConv(aa, vbLowerCase), "<a href=") If lngPosSt > 0 Then lngPosEnd = InStr(Mid(aa, lngPosSt), ">") If lngPosEnd > 0 Then strATag = Mid(aa, lngPosSt, lngPosEnd) GetATag = strATag End If End If List1.AddItem GetATag Loop Close #fileno これでいくと、とりあえず最初のURL(a hrefとかを消す前の状態まで)は 取得できたのですが、何故か一つ目しか取得しないので、悩んだのですが HTMLのソースに改行がなく、全文で一つの行になっていたため、最初の 一つしか取得できないのだと分かりました。 それで、今度はソフト改行コードを入れたらどうだろうと考えまして、 次のようにしてみました。 上のコードで読み込む「na」を作成するのに、 Open na For Input As #fileno Do Until EOF(fileno) Line Input #fileno, www zzz = zzz & www & vbCrLf Loop Close #fileno Text2.Text = zzz With Text2 lngResult = _ SendMessage( _ .hWnd, _ EM_FMTLINES, _ CLng(Abs(True)), _ ByVal CLng(0)) Text3.Text = Replace(.Text, _ vbCr & vbNewLine, _ vbNewLine) End With Open na For Output As #fileno Print #fileno, Text3.Text Close #fileno こんな風に一度改行コードを付与してから、また「na」という テキストに書き込んでみました。 で、このファイルを Line Input で読み込ませてみたのですが、 ご想像の通り、タグの途中でバシバシ改行されているため ほぼURLは取得できませんでした。 ここまででほとんどお手上げ状態です!!! 途中で改行されても続けて検索する方法、あるいは 改行がなく全文で一行の場合でも続けてURLを取得していきリストボックスに 追加していくような方法はないのでしょうか? すみません、まだまだレベルが低いもので。 よろしくお願いいたします

関連するQ&A

  • フォームの内容でリンク先URLの作成

    テキストボックスに文字列を入力してもらい送信ボタンを押すと、 あらかじめ決まっているURLにその文字列をつないだリンク先に移動する ということがしたいのですが、 <input name="test" type="text" value="" > <input type="submit" value="送信" onClick="location.href='決まったURL='"> で飛べません。 「決まったURL」に入力された文字列を指定する方法がわかりません。 どなたか教えてください。

  • PHP URL→HTML→取得→RSS出力

    PHP URL指定→HTMLソース→指定タグ要素取得(複数)→RSS(.xml)出力について URLからHTMLソースを取得し、要素を取得しRSSファイルを作りたいと思っています。 例えば、http://shopping.yahoo.co.jp/ranking/のURLのHTMLソース内から <p class="elPhoto"> <a href="○○○.html"> <img src="【取得したい文字列1】" width="200" height="200" alt="○○○"> </a> </p> <h4 class="elTitle"> <a href="【取得したい文字列2】">【取得したい文字列3】</a> </h4> <h4 class="elPrice"> <span>【取得したい文字列4】</span>円 </h4> <p class="elSellStatus"></p> <h4 class="elStore"> ストア:<a href="【取得したい文字列5】">【取得したい文字列6】</a> </h4> など指定する各要素を全件取得し、 <item> <title>【取得したい文字列3】</title> <link>【取得したい文字列2】</link> <description> 【取得したい文字列1】<br> 【取得したい文字列4】<br> 【取得したい文字列6】<br> 【取得したい文字列5】 </description> </item> などとRSSで全件出力し、xmlファイルを作成したいです。 アドバイス、ご指導お願いします。

    • 締切済み
    • PHP
  • URLについて

    URLを入れるときに、 httpの前に view-source: といれるとソースが見れますよね。 こういうURLに直接打ち込む文字列に関する情報で、なんらかの文字列をURLのどこかに入れたら、それ以前のURLは無視され、 その文字列以降のページが開かれる文字列(コマンド)みたいなのはないでしょうか? また、ほかの文字列でこうなるよ。というのがあれば教えていただけないでしょうか。よろしくお願いします。m(_ _)m

  • 文字列検索で

    よろしくお願いします。 文字列検索instr関数で、特定文字(スペース)でない文字を検索したいのですが、どのようにしたらいいですか? instr関数では、できないのでしょうか? たとえば、 文字列" osietegoo "  →  3 文字列"    situmon"  →  7 スペースでない文字が出現する位置を知りたいです。 instr(文字列,"o")ではなく、" "ではない、、、としたいのですが、できますか?

  • VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています

    VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。 正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。 タグごと抽出する方法でも構わないので教えてください。 例えば <a href="www.yahoo.com△">○○○</a>   ・・・<1> ※△は(www.yahoo.com)+(半角数字1文字) ※○○○は1文字以上の全角文字 このようなパターンの文字列(<1>を丸ごと)を抜き出すには どのような正規表現を書けばよいでしょうか? 単に<a href ではじまって </a>  で終わる文字列であれば <a href.*</a> で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので ぜひ実現させたいと思っています。宜しくお願いします。

  • VBAでソースから全てのURLを取得したい

    VBAでソースに書いてある全てのURLを取得したいのですが、現状では一部しか取得できません。 文字数制限にでも引っかかっているのでしょうか? どうすれば全てのURLを取得できるのか・・添削して頂けると or ヒントを教えて頂けると助かります。 よろしくお願いします。 (Excel2003を使用) Sub test() Dim objIE As Object Dim objTAG As Object Dim source As String Dim url As String Dim url_start As String Dim url_end As String Dim y As Long url_end = 1 y = 1 Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = False objIE.Navigate "http://dir.yahoo.co.jp/" Do While objIE.Busy = True DoEvents Loop Application.Wait Time:=Now + TimeValue("00:00:03") source = objIE.Document.All(1).Innerhtml Do While y < 10000 url_start = InStr(url_end, source, "<a href=", vbTextCompare) If url_start = 0 Then y = 10000 Else url_end = InStr(url_start, source, ">", vbTextCompare) url = Mid(source, url_start + 9, url_end - url_start - 10) Cells(y, 1).Value = url y = y + 1 End If Loop End Sub

  • urlのソースを自動で読み込み、ある文字列を検索する方法、またはツール

    urlのソースを自動で読み込み、ある文字列を検索する方法、またはツールを探しています。 URLが1万件ほどあります。このURLの中から、特定の文字列を含むURLのみをピックアップして一覧にしたいです。 たとえば、ブログURLが3つあったとして http://manitame.blog115.fc2.com/blog-entry-2469.html http://yourockmyworld829.blog88.fc2.com/blog-entry-1067.html http://moviehunt.blog58.fc2.com/blog-entry-1323.html 上記からyoutubeを貼っているブログ記事をピックアップする…などです。 "object width"などのタグが検索できれば可能なのではと安直に思っているのですが… htmlタグはその都度指定できる形だと幸いです VBAも検討したのですが、プログラム言語がかけないため、理解するのに時間がかかってしまいそうです…。 どなたかお得意な方、ソースも含めご教授いただけませんでしょうか。 またはそのようなツールをご存知の方いらっしゃいましたらご教授頂けますと幸いです。 よろしくお願い致します。

  • HTMLのソースをエクセルに貼り付ける方法

    HTMLのソースを、そのまま(メモ帳表示データのまま)Excelに貼り付ける方法はありますか。 メモ帳でソースの表示をして、全て選択→コピー→Excelに型式を選択して貼り付け→テキスト で貼り付けてみましたが、変なフォーマットで表示されます。 セルの書式を文字列にしても同じです。 目的はExcelの文字列操作で特定の文字だけ拾い出して加工しようと考えています。 OS:Win95、Excel2000です。

  • HTMLソース

      よろしくお願いします。 下記のソースを使用可能な状態にしたいのですが、   HTMLソース間にあるジャバスクリプトの、プログラムの部分を(ソース選択)というボタンをクリックさせ、ジャバスクリプトの部分だけをコピー出来るように青色に反転させたいのですが、(ソース選択)ボタンが機能しません。よろしくご指導ください。 <h2 align="center">他サイトのフレーム内にリンクされるのを防止します</h2> 自動的にフレームを解除してトップページを表示します<br> <input type="button" value="ソース選択" onclick="highlight(0)"> <form name="s1"> <textarea cols="80" rows="5" readonly> <script language="javascript"> <!-- if (parent.frames.length > 0) top.location.href = "自サイトのトップページURL"; //--> </script>

  • エクセルVBAで特定文字列の個数を高速に調べたい

    文字列の入っている変数内で特定の文字列(今回はvbCrLf)が何個発生しているかを、高速に調べたいのですが、どのような方法があるでしょうか? 現在以下のことをやっています。 数千件のテキストファイルから特定文字列を検索しています。 検索を高速化するために、テキストファイルをバイナリーモードで1つの変数に読み込み、instr関数で検索しています。 見つかった場合、その位置から前にあるvbCrLfをInStrRev関数で、後ろにあるvbCrLfをinstr関数で位置を調べ、元の変数からmid関数で該当ラインを取り出しています。 検索はこれで可能ですが、特定文字列を調べたinstr関数の戻り値がテキストファイルの先頭からの位置(何桁目)なので、検索した文字列が何行目にあるか分かりません。 変数の検索文字が見つかった位置までの部分でvbCrLfが何個発生しているかが分かれば行数が判定できます。 vbCrLfを調べるinstr関数を何回も繰り返せば行数の判定は可能ですが、もっと高速に(一つの関数・命令で)調べることはできないでしょうか? また他に行数を特定する良い方法があったら教えてください。 よろしくお願い申し上げます。