- ベストアンサー
HTMLソースからURLだけを抜き出す方法を教えてください!
どなたかお知恵をお貸しください。 HTMLのソースファイルからURLを取得するツールを 作ろうと思うのですが、そのURLだけを抜き出すと いうところがよく分かりません。 ソーステキストを open "source.txt" for input as #1 do until eof(1) line input #1,aa で一行ずつ読み込んでいき、 その中から InStr関数で「http://」の文字列を検索すると いうことぐらいは想像がつくのですが、URLは 文字数も決められているわけではないので、検索で 見つかった位置から最後までを抜き出すという方法が どうしても分かりません。 あるいは、タグの <A href= という文字列を検索して 見つかった位置から次に > という文字列が見つかった 場所までの間を抜き出すという方法になるかと思いますが、 最初に検索で見つかった位置から次に見つかった位置まで をどのように検索すればいいのかが分かりません。 何かいい手がございましたら、ぜひ教えてください。 よろしくお願いします!
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (6)
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/367)
回答No.6
noname#21649
回答No.5
- hershe
- ベストアンサー率55% (5/9)
回答No.4
- hershe
- ベストアンサー率55% (5/9)
回答No.3
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/367)
回答No.2
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.1
お礼
こんにちは。 詳細な回答をまたまたありがとうございます! コードをそのままコピーさせていただいて、部分的に変更しながら いろんなパターンを試してみました。 "<a"を"<a href"とか"http"に変えて試してみました。 結局下のコードできれいに抽出できました。 Open na For Input As #fileno Do Until EOF(fileno) Line Input #fileno, a getatag = "" lngposst = InStr(StrConv(aa, vbLowerCase), "<a") Do While lngposst > 0 getatag = "" ' If lngPosSt > 0 Then lngposend = InStr(Mid(aa, lngposst), ">") If lngposend > 0 Then stratag = Mid(aa, lngposst, lngposend) getatag = stratag End If ' End If If getatag <> "" Then yyyyy = StrConv(getatag, vbLowerCase) ooo = Replace(yyyyy, "<a href=", "") www = Replace(ooo, ">", "") saigo = Replace(www, """", "") List1.AddItem saigo End If lngposst = lngposst + lngposend lngposst = InStr(lngposst, StrConv(aa, vbLowerCase), "<a") Loop Loop Close #fileno これでどうやらきれいにリストボックスに追加されました。 途中に改行が入っているソースでも試しましたが、URLの途中に 改行が入っているものは案外とないようで、ちゃんと出力されて いましたので、ここのところはとりあえず無視してしまうことにしました。 あと、間に「target」が入っているものもたまたま見つからなかったので とりあえずReplaceには入れていませんが、これは教えていただいた 方法で位置を割り出してtargetからhttpの前までを削除してしまうことで 解決するかと思います。 次はgifなどの画像も取り込んでしまおうと思います。 これは、上の例で言うと、aaの中に.gifの文字列があったらその位置までを 抽出するという方法でどうにかなりそうだと、自分で勝手に思っています。 ほぼ100%が教えていただいた方法でどうにかなりそうな気がします。 ほんとにありがとうございました!