こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

URLでプログラムを操作させるか判別させたい

先日http://oshiete1.goo.ne.jp/kotaeru.php3?q=1734032
の質問をした者です。

ところで、先日の質問でプログラム中に例としてあげたライブドアのブログのように、
__mode=rssに対応している場合
http://app.blog.livedoor.jp/takapon_ceo/tb.cgi/50030092?__mode=rss
は、トラックバック先のURLを取得できるのですが、
__mode=rssに対応していないブログ
(例えばhttp://tb.plaza.rakuten.co.jp/hirobastaff/diary/200510210000/?__mode=rss(楽天スタッフblog))
のようにレスポンスとしてエラー(error要素が1)を返すブログに対してはときはリンクを抽出することができないので、
URLで判別させて、リンクを取得する操作を実行するかしないかを決めたいです。

つまり、__mode=rssに対応しているブログ、例えばライブドアやヤプログやココログなどのブログに対しては、
リンクを抽出させるプログラムを実行させるため、
プログラム中のString url を見て、そのURLが__mode=rssに対応しているブログのURLの場合はプログラムを実行させる、
例えば、String url にblog.livedoorやjpyaplog.jpやcocolog-nifty.comなど含まれているなど、
__mode=rssに対応しているのでブログのURLが含まれていたら、トラックバック先のURLを抽出させる操作を実行させる。

一方、String urlを見て、__mode=rssに対応しているブログのurlにマッチしないブログのURLの場合はelseとして、
リンクを抽出させるプログラムは実行させず、違う処理をさせたいです。
(例えば、HTMLからトラックバック先のURLをパースさせる処理など)

このようにするには先日の質問のプログラムをどのように改正させればよいでしょうか?


よろしくお願いします。

投稿日時 - 2005-10-26 00:39:12

QNo.1736263

すぐに回答ほしいです

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

urlの中に指定した文字列が含まれているかテストするサンプル
public class Sample {
public static void main(String[]args){
String url = "http://blog.livedoor.jp/everyone/";
if(url.matches(".*(blog\\.livedoor|yaplog\\.jp|cocolog-nifty\\.com|blogso-net\\.ne\\.jp).*")){
System.out.println("マッチした");
} else {
System.out.println("マッチしない");
}
}
}

投稿日時 - 2005-10-28 02:36:00

お礼

ご回答ありがとうございました。

投稿日時 - 2005-10-29 00:15:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

indexOfを使えば、文字列の中に指定した文字列が含まれているかどうかを調べることができます。
また、正規表現を使ってマッチする部分があるかどうかでも調べることができます。
この場合で言えば、実際のURLにアクセスするので能率はよろしくないですが、
<response><error>1</error>~</response>
とかerror要素が0でないというのが帰ってくるのであればそれを使うのも可能かと思います。

投稿日時 - 2005-10-26 02:10:18

お礼

ご回答ありがとうございます。

正規表現を使う場合はどのようにプログラムを記述すればよいでしょうか?

また、URLの判別を複数でできるのでしょうか?

例えば、String urlに
"blog.livedoor" "yaplog.jp" "cocolog-nifty.com" "blogso-net.ne.jp" が含まれていたら、
__mode=rssでURLを抽出させるプログラムの

DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
Document doc = builder.parse(url);

以降の操作をさせて、条件に一致しない場合は別の操作をさせるようにするには、
どのようにすればいいでしょうか?

よろしくお願いします。

投稿日時 - 2005-10-28 00:33:32

あなたにオススメの質問