• ベストアンサー

URL抽出

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

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・一番簡単な方法は『http://』文字列を strstr() 関数で検索します。  その後、ダブルクォーテーション文字までを抽出します。  シングルクォーテーション文字の場合もあるのでこれにも対応するように。 ・下に簡単なサンプルを載せます。 サンプル: char buff[ 1024 ]; char *find; // ファイルから読み込む while ( fgets(buff,sizeof(buff),fp) != NULL ){  if ( (find = strstr(buff,"http://")) != NULL ){   for ( ; *find != '\0' ; find++ ){    if ( (*find == '\'') || (*find == '\"') ){     break;    }    putchar( *find );   }   putchar( '\n' );  } }

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

普通に考えると、正規表現を使うことになるでしょうね。 私の場合、最近では純粋な正規表現ではなく、Boost.Spiritを使っていますが、この辺りは好みや慣れ親しんだものもあるので、どれがよいとは一概には言えません。 なお、"http://" を探索するだけでは不十分かと思います。"https://" は無視してよいのかどうかわかりませんし、CGIやPHPのパラメータにその文字列が含まれていた場合、本文中に http:// の記載があった場合、IMGタグなど、Aタグ以外に現れた場合などは、期待した結果にならないからです。