電子書籍の厳選無料作品が豊富!

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

わかるかた、回答のほどをよろしくお願いします。

A 回答 (2件)

★アドバイス


・一番簡単な方法は『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' );
 }
}
    • good
    • 0

普通に考えると、正規表現を使うことになるでしょうね。


私の場合、最近では純粋な正規表現ではなく、Boost.Spiritを使っていますが、この辺りは好みや慣れ親しんだものもあるので、どれがよいとは一概には言えません。

なお、"http://" を探索するだけでは不十分かと思います。"https://" は無視してよいのかどうかわかりませんし、CGIやPHPのパラメータにその文字列が含まれていた場合、本文中に http:// の記載があった場合、IMGタグなど、Aタグ以外に現れた場合などは、期待した結果にならないからです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!