• ベストアンサー

テキストから文字列を抜き出すには?(HTMLソース

HTMLが書かれたテキストファイルから <a href="http://-----.com">hogehoge</a>のように書かれたタグから http部及びhogehoge部を抜き出すのに良い方法はないでしょうか? 現在IndexOfを使って"<a"~等で取得していますがタグの書き方によっては <a href="から始まっているとは限らないのでこの辺りも何とかしたいと考えてます。 何かご存知の方いましたらご教授お願いします 環境はVB 2005 Pro を使用しております

noname#21987
noname#21987

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

  • ベストアンサー
回答No.1

お世話になります。 正規表現を使えばよいと思います。 Dim teststr1 As String = "<a href='http://hgoehoeg/'>abc</a>" Dim teststr2 As String = "<a target='_blank' href='http://hgoehoeg/'>def</a>" Dim teststr3 As String = "<a target='_blank' href='http://hgoehoeg/' >ghi< / a>" Dim reg As System.Text.RegularExpressions.Regex _ = New System.Text.RegularExpressions.Regex("(?<=<a.*?>).*(?=<.*/)") Dim m1 As System.Text.RegularExpressions.Match = reg.Match(teststr1) If m1.Success Then Console.WriteLine(m1.Value) Dim m2 As System.Text.RegularExpressions.Match = reg.Match(teststr2) If m2.Success Then Console.WriteLine(m2.Value) Dim m3 As System.Text.RegularExpressions.Match = reg.Match(teststr3) If m3.Success Then Console.WriteLine(m3.Value)

noname#21987
質問者

お礼

回答ありがとうございます。 やはり柔軟に解析しようとすると正規表現は避けれない道のようですね サンプルソースを参考にさせていただきます。 これは余談ですがVB関係で検索した時に時々見かける なおこ(・∀・)さんだったんですね、困ったときは色々参考にさせていただいてます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

IEオブジェクトに読み込ませて、DOMで取り出すのが簡単かも ---------------------------------------------------------------- Imports System Imports Microsoft.VisualBasic Namespace InternetExplorer Public Class Explorer Public Shared Sub Main() Dim IE As Object = CreateObject("InternetExplorer.Application") IE.Navigate("http://okwave.jp/kotaeru.php3?q=2231283") IE.Visible = False Do while IE.busy Loop Do while IE.Document.readyState <> "complete" Loop Dim x As Object for each x in IE.Document.links Console.WriteLine(x.href & " " & x.innerText) next IE.Quit IE = nothing End Sub End Class End Namespace ---------------------------------------------------------------- コンソールプログラムで書いているので、CreateObjectを使ってますけど、参照設定してイベントの割り付けとかしてやると、Do ~ Loop みたいなブサイクなことをしないでもDocumentCompleteイベントが使えます。

noname#21987
質問者

お礼

回答ありがとうございます。 シンプルに抽出するならこちらを使用した方が簡単に出来ますね 解析対象によって使い分けたいと思います

関連するQ&A

  • VBAを使ってHTMLソースから特定の文字列を抽出

    ExcelでVBAを使ってHTMLソースから特定のデータを抽出したのですが、VBAは浅学なのでアドバイスを頂きたいです。 例えば、ここサイトの「 http://www.nankankeiba.com/calendar/201304.do 」 <em></em>タグ内の<a href="URL">のURLだけを取得して並べたいのですが、可能でしょうか。 この部分。(http://uproda.2ch-library.com/799465NHT/lib799465.jpg) ここ辺りが参考になりそうなのですが、<em></em>タグ内に限定する方法がわかりません。詳しい方いましたら、アドバイスよろしくお願いします。 http://okwave.jp/qa/q5919101.html 理想としてはこんな感じで取り出せるようにしたいです。(「program/20130407200101.do」の部分だけでも良い) http://uproda.2ch-library.com/7995052y7/lib799505.jpg

  • 任意の文字列で囲まれていない任意の文字列を置換するには

    任意の文字列で囲まれていない任意の文字列を置換したいです。 たとえば、『 [[ 』と『 ]] 』で囲まれていない『http://hogehoge/』を『<a href="http://hogehoge/">http://hogehoge/</a>』に置き換えるにはどうすればいいのでしょうか。 具体的には下記の【置換前】のテキストを【置換後】のような感じにしたいです。 【置換前】 http://hogehoge/ [[http://hogehoge/]] http://hogehoge/ http://hogehoge/ [[http://hogehoge/]] 【置換後】 <a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]] <a href="http://hogehoge/">http://hogehoge/</a> <a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]] preg_replaceかereg_replaceのどちらかで例を挙げてもらえるとありがたいです。ご教示お願いします。

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

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

  • リンクする画像とテキストをくっつけるには?

    ブログでHTMLタグを使いたいのですがまだよく分かりません。 テキストをクリックしたらリンクするためのHTMLタグは次の通りですよね。 <a href="リンク先URL">表示するテキスト</a> 画像(写真)をクリックしたらリンクするためのHTMLタグは次のようになりますよね。 <A Href="リンク先URL"><img src="画像のアドレス"><A>  私は現在、テキストと画像の両方を同じサイトにリンクさせるのに、上の二つのタグを使っているのですが、本文に表示されると二つが離れてしまいます。よく、画像とテキストが一体化しているのを見るのですが、そうするにはどうしたらいいのでしょうか?ご教授願えませんか?

  • HTMLソースの検索について

    Postgres 8.3.9を使用しています。 現在使用しているテーブルの中に HTMLソースを格納しているカラムがあります。 テーブル名:contents カラム名:text ※データ例:<a href="http://www.google.co.jp">グーグル</a> HTMLソースが格納されたカラムに対して、キーワードでの検索を行いたいと考えています。 当然ながら以下の様に検索をすると、HTMLソース(例:href)をキーワードとしても検索に引っかかってしまいます。 select * from contents where text Like '%【検索キーワード】%'; なんとか、HTMLソースをキーワードとした場合は検索されずに、 HTMLタグに囲まれた部分(※上記データだと'グーグル')をキーワードとした場合にだけ、 検索されるようにしたいと考えています。 何か良い手法はないでしょうか。 ご教授をお願い致します。

  • VBAを使ってHTMLソースから特定の文字を抽出2

    前回ExcelでVBAを使って「http://www.nankankeiba.com/calendar/201204.do」のサイトからHTMLソースから<em></em>タグ内の<a href="URL">のURL情報だけを抽出するコードを教えて頂きました。 そこで、取り込んだデータの更に下に「http://www.nankankeiba.com/calendar/201210.do」からも同じように<em></em>タグ内のURLデータを取得して表示したいのですが、ページ移動しても同じ情報を取得したり上手くいかないのでアドバイス頂けないでしょうかm(_ _)m 上のURLだけを取り込むコードはこちらになります。 http://uproda.2ch-library.com/800072670/lib800072.txt イメージとしてこの様にしたいです。 http://uproda.2ch-library.com/800071Xz0/lib800071.jpg

  • カッコを使った文字列の分割について

    文字列がいくつか存在し(個数不定)、そのそれぞれの文字列はカンマで区切られております。 その中には、文字列+カッコに挟まれた文字列、というのも存在します。 ex1) hoge,test(hogehoge),nana その文字列をカンマで区切り、それぞれをaタグで結びます。 ex2) <a href="hoge">hoge</a>/<a href="test(hogehoge)">test(hogehoge)</a>/<a href="nana">nana</a>/ ---現段階で自力で完成したのはここまでです--- 今度はそのうち、カッコで区切られているモノも分割し、aタグで結ぼうと思います。 ex3) <a href="hoge">hoge</a>/<a href="test">test</a>(<a href="hogehoge">hogehoge</a>)/<a href="nana">nana</a>/ このように扱いたいのですが、どうすればいいでしょうか。 参考までにex2までのソースを張っておきます。 お返事、お待ちしております。 以下、ソース抜粋 $LOADSNG="hoge,test(hogehoge),nana"; $EXPSNG=split(",",$LOADSNG); foreach($EXPSNG as $KEYSNG=>$VALSNG){ echo ($KEYSNG==0?"":"/").'<a href="'.$VALSNG.'">'.$VALSNG.'</a>'; }

    • 締切済み
    • PHP
  • <a>タグのテキストを取得

    jqueryを使っています。 $('a');を使用しページ内のaタグを全て抜き出すと hrefの属性値が表示されてしまい、取り出したい<a>タグに 囲まれたテキストを取得することが出来ません。 <a href="http://yahoo.co.jp">Yahoo!</a> <a href="http://google.co.jp">Google</a> 取り出したい内容は「Yahoo!」及び「Google」のテキスト部分です。 恐らく簡単な内容だとは思いますがご教授お願い出来ますでしょうか?

  • WebBrowserにHTMLテキストを読み込ませる。

    お世話になります。 VBには、WebBrowserコントロールというものがありますが、これで次のようなことは出来ないのでしょうか。 それは、まず、リッチテキストボックス(もしくは普通のテキストボックス)に、 HTMLを書いていきます。 そして、ボタンを押すとWebBrowserが乗ったフォームが出てきて、テキストを読み込んでそれをHTMLファイルとして表示させる。 というものです。 色々試してみましたが、上手くいきません。 一旦どこかに一時的にファイルを保存させてそれを読み込ませる……というのも考えたのですが、直接テキストから読めればコードが単純になるので、もし出来るのなら直接読ませたいのです。 どなたか方法を知っていたら、ぜひお教えください。お願いします。 --------- 開発環境 VB6.0SP5 WinME

  • Ajax.Requestで取得したHTMLソースから'href'の値を

    Ajax.Requestで取得したHTMLソースから'href'の値を取得する方法について Javascriptにて取得した別ページのHTMLタグから 必要な部分のみ値を取得し、配列に格納することは可能でしょうか? 以下Javascript ------ var url = "http://test/index.htm"; new Ajax.Request( url, { "method":"get", asynchronous:false, onComplete: function(request) { html = request.responseText; } } ); alert(html); ------ 以下"http://test/index.htm"のHTMLタグ ------ <html> <head> </head> <body> <a href='http://test/index2.htm'>index2</a> <a href='http://test/index3.htm'>index3</a> <div>index4</div> </body> </html> ------ 上記で"http://test/index.htm"のHTMLタグの全てを取得して出力することはできたのですが、 "href"の"http://test/index2.htm" "href"の"http://test/index3.htm"のみ配列に格納したいのです。 よろしくお願いいたします。

    • ベストアンサー
    • AJAX

専門家に質問してみよう