トラックバック先のURLのみ抽出したい(Excite・Sonetにて)

このQ&Aのポイント
  • トラックバック先のURLのみ抽出するために、HTMLの構造上の情報を除外するプログラムの改正方法を教えてください。
  • ExciteやSo-netのブログからトラックバック先のURLを抽出するプログラムにおいて、余計な情報が一緒に抽出されるため、抽出したいURLのみを取得する方法を教えてください。
  • HTMLの構造上の情報を除外してトラックバック先のURLのみを抽出するためのプログラムの改正方法を教えてください。
回答を見る
  • ベストアンサー

トラックバック先のURLのみ抽出したい(Excite・Sonetにて)

いつもお世話になっています。 以前の「ブログのHTMLからトラックバックをしたブログのURLの抽出」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1725502 の質問をしたものです。 No.4のご回答を参考にExiteのブログからトラックバック先のURLの抽出するプログラムを 教えていただいたプログラムを以下のように変更し、 class GetTBAddrExcite { … Pattern trackBack = Pattern.compile("<A HREF=(http://.+) TARGET=_NEW>"); while((aLine = reader.readLine())!=null){ // if(aLine.indexOf("tb_tab")>=0){ if(aLine.indexOf("<IMG SRC=http://md.exblog.jp/img/eg/ico_comment.gif WIDTH=9 HEIGHT=9>") >=0){ flag=true; } else { if(flag && aLine.indexOf("<DIV CLASS=COMMENT_INPUT>")>=0) … 実行したのですが、(例としてExcite社長の記事http://blog.excite.co.jp/yamamura/2415166/を対象とした) 結果として以下のように帰ってきてしまいました。 http://www.excite.co.jp/exblog/faq/?kind=general&id=6 TARGET=_NEW>繝倥Ν繝?/A></ B>]<BR> </DIV><DIV CLASS=COMMENT_LINE></DIV><DIV CLASS=COMMENT_TAIL><IMG SRC=htt p://md.exblog.jp/img/eg/ico_comment.gif WIDTH=9 HEIGHT=9> Tracked from <A HREF= http://example.exblog.jp/1614266 TARGET=_NEW><B>blog 貍ア遏ウ繧オ繝ュ繝ウ 繝ゥ..</B> </A> at 2005-10-28 09:51</DIV><DIV CLASS=COMMENT_BODY>繧ソ繧、繝医Ν : <A HREF=htt p://example.exblog.jp/1614266 … 抽出したいのは、http://example.exblog.jp/1614266なのですが、 HTMLの構造上のためか、余計な情報までも抽出してしまいます。(So-netも同じような問題が起きます) 抽出したいURLのみ取得させるには、 プログラムをどのように改正させればいいでしょうか? よろしくお願いします。

  • shows
  • お礼率96% (48/50)
  • Java
  • 回答数1
  • ありがとう数1

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

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

So-netは、試してませんけど・ public static String[] getTBAddrExcite(String urlString){ String addr=""; boolean flag=false; try{ URL url = new URL(urlString); InputStream input = url.openStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); String aLine; Pattern trackBack = Pattern.compile("Tracked from <A HREF=(http://.+?) TARGET=_NEW>"); while((aLine = reader.readLine())!=null){ if(aLine.indexOf("<DIV CLASS=COMMENT_LINE>") >=0){ flag=true; } else { if(flag && aLine.indexOf("Commented by ")>=0) break; } if(flag==false) continue; Matcher m = trackBack.matcher(aLine); while(m.find()){ addr+=m.group(1)+","; } } reader.close(); input.close(); } catch(MalformedURLException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } return addr.split(","); }

shows
質問者

お礼

ご回答ありがとうございました。 無事URLを抽出できました。

関連するQ&A

  • トラックバック先のURLの抽出(ライブドアのブログにて)

    以前の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1725502 を参考にライブドアのブログにトラックバックされたブログのURLを取得するプログラムを、 以下のように作成しました。 class GetTBAddrLivedoor { … Pattern trackBack = Pattern.compile("<a target=\"_blank\" href=\"(http://.+)\" class=\"posttitle\">"); while((aLine = reader.readLine())!=null){ // if(aLine.indexOf("tb_tab")>=0){ if(aLine.indexOf("<a name=\"trackback\">") >=0){ flag=true; } else { if(flag && aLine.indexOf("<a name=\"comments\">")>=0) … しかし、ライブドアでは、一度リニューアルをしまして、 それが原因でリニューアル前後のブログでは、HTMLの構造が変わり、 トラックバック先のURLの記述方法が異なるようになってしまっため、 URLを取得できないものもありました。 リニューアル後の新しいブログは、 <a target="_blank" href="http://blog.livedoor.jp/example/archives/500.html" class="posttitle"> リニューアル前の古いブログは、 <a class="atrackback-post" target="_blank" href="http://yaplog.jp/example/archive/178"> という記述になっています。 そこで、一度の処理で、リニューアル後と前のブログに対してトラックバックURLを取得させる、 新しいブログの場合には、 Pattern trackBack = Pattern.compile("<a target=\"_blank\" href=\"(http://.+)\" class=\"posttitle\">"); 古いブログには、 Pattern trackBack = Pattern.compile("<a class=\"atrackback-post\" target=\"_blank\" href=\"(http://.+)\">"); このようにして、全てのライブドアのブログに対応できるプログラムにするには、 プログラムをどのように改正すればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • ブログのHTMLからトラックバックをしたブログのURLの抽出

    ブログのHTMLから、そのブログのある記事に トラックバックをしたブログのURLを抽出するプログラムを作りたいと思います。 例えば、URLがhttp://blogs.yahoo.co.jp/example/1234というヤフーのブログの記事に、 http://blog.goo.ne.jp/example/1234 http://blogs.yahoo.co.jp/example2.html の二つのブログがトラックバックをしたとします。 このヤフーのブログの記事のHTMLは以下のようになります。 <html> <head> … <style="display:none">http://blogs.yahoo.co.jp/example/1234/trackback</div> … <tr id="tb_tab" style="display:block"> … <b><a href="http://blog.goo.ne.jp/example/1234" target=_blank>…</a></b> … <b><a href="http://blogs.yahoo.co.jp/example2.html" target=_blank>…</a></b> … </body> </html> そこで、トラックバックをしたURLを抽出するときに、 例えば、http://blog.goo.ne.jp/example/1234を抽出するのに、 target=_blankを参照して、 HTML中の<a href="http://blog.goo.ne.jp/example/1234" target=_blank>から http://blog.goo.ne.jp/example/1234を抜き出すようにして、 トラックバック先のURLを抽出するプログラムを作成したいです。 このようなプログラムを作成するにはどのようにプログラムを組めばいいのでしょうか? また、HTML中には、target=_blankで参照すると、以下のような <a href="http://rd.yahoo.co.jp/rss/b/blog/myblog/rss2/01/*http://blogs.yahoo.co.jp/example/rss.xml" target=_blank> [<a href="/example2/5242000" target=_blank> 余分な情報も抜き出してしまうので、上記を抽出しないように、 rssを含むもの、http:で始まらないものは抽出しないという条件で抽出できるようなら、 こちらの方法も教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 同じブログサービスでもHTMLの構造が異なるブログからのトラックバック先のURLの取得

    以前の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1725502 のNo.4のご回答を参考にして、 ブログのHTMLからトラックバックをしたブログのURLの取得するプログラムを作成しています。 しかし、ブログサービスによってはリニューアルの関係か、 新しいブログと古いブログではHTMLの構造が変わってしまい、 一つのプログラムでは対応できない場合がでてきました。 例えば、ヤプログを例にして説明します。 こちらのヤプログのブログhttp://yaplog.jp/lovery-honey/archive/27 のように比較的古くからのブログであれば 参考プログラムの正規表現のところを、 以下のようにすると、URLを取得できるのですが、 Pattern trackBack = Pattern.compile("<a href=\"(http://.+)\" target=\"_blank\">"); while((aLine = reader.readLine())!=null){ if(aLine.indexOf("<a id=\"trackback\">") >=0){ flag=true; } else { if(flag && aLine.indexOf("<!-- pings -->")>=0) break; } こちらのブログhttp://yaplog.jp/chikako/archive/19 のように比較的新しいブログでは、 HTMLの構造が変わってしまい、 Pattern trackBack = Pattern.compile("<a href=\"(http://.+)\" target=\"_blank\">"); while((aLine = reader.readLine())!=null){ if(aLine.indexOf("<a name=\"tb\">") >=0){ flag=true; } else { if(flag && aLine.indexOf("<div class=\"main_cl\">")>=0) break; } と、正規表現を上記のように記述しないとURLを取得できません。 そこで、ひとつのプログラムで、上記の二つのケースに対応するようにするには、 正規表現をどのように記述して、プログラムを改正すればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • ブログのHTMLからトラックバックをしたブログのURLの抽出(URLの重複抽出を避けたい)

    いつもお世話になっています。 先日、「ブログのHTMLからトラックバックをしたブログのURLの抽出」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1725502 の質問にてのご回答を参考にプログラムを作成しました。 ところで、ブログによってはトラックバック先のURLを紹介するときに、 トラックバック先のブログの記事のタイトル・そのブログタイトル名やmoreなどの表示によって、 トラックバックの先のURLのリンクがHTML中に二つ以上出てくるものもあります。 例えば、楽天では、以下のHTMLのように同じURLが重複しています。 <html> <head> … <a name="trackback"></a> <H4 class="h4"> <TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD> <a href="http://plaza.rakuten.co.jp/example/20051020/" target="_blank"></a> </TD><TD align="right"> <a href="http://plaza.rakuten.co.jp/example/20051020" target="_blank </a> </TD></TR></TABLE> /div> <br /> <H4 class="h4"> <TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD> <a href="http://blogs.dion.ne.jp/example/archives/2121894.html" target="_blank"> </a> </TD><TD align="right"> <a href="http://blogs.dion.ne.jp/example/archives/2121894.html" target="_blank">TORACCHO'S ROOM E-Package2</a> </TD></TR></TABLE> </H4> … </body> </html> そこで、同じURLを重複して抽出しないようにするには、 どのようにプログラムを改正すればよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • ヘッダーの写真を入れ替えるには

    現在エキサイトブログ「ワイド」スキンを利用しております。 ヘッダーを写真に変えて見たいと思ってエキサイトブログ向上委員会の「ヘッダーの写真を入れ替えるには」を参考にしようと思いましたがHTMLに <div id="main"> <div id="Headarea"> <a href="../"> <img src="http://md.exblog.jp/skn/img/a/01/16/4/sample01.jpg" border="0"> </a>------------------------------------------------------------------ の部分が見当たらなく困っております。 お判りの方がいらっしゃいましたらHTML,CSSの変更方法を教えていただきたいと思っております。よろしくお願い致します。

  • 実行対象のブログのURLは抽出させない

    以前の質問http://oshiete1.goo.ne.jp/kotaeru.php3?q=1725502 のご回答のプログラムを改良してトラックバックされたブログURLを抽出する 以下のようなプログラムを作成しました。 (省略部分は参考プログラムとほぼ同じ。) class GetTBurlLivedoor { public static String[] getTBaddrLivedoor(String urlString){ … //ブログのURLを抽出。ただし、スペースの都合上ここではライブドアのみ抽出とする //indexOfを用いての範囲指定はせず、HTMLすべてに対してパース Pattern trackBack = Pattern.compile("http://blog.livedoor.jp/.*/archives/\\d+.html"); while((aLine = reader.readLine())!=null){ Matcher m = trackBack.matcher(aLine); if(m.find()){ addr+=m.group(0)+","; } … public static void main(String[] args){ String url = args[0]; //実行例 http://blog.livedoor.jp/takapon_ceo/archives/50030785.html String[] TBaddr = getTBaddrLivedoor(url); for(int i=0;i<TBaddr.length;i++) System.out.println(TBaddr[i]); } } そこで、URLを抽出する際に、実行対象となるブログ自身に関するURL 例)http://blog.livedoor.jp/takapon_ceo/archives/50034644.html などは抽出しないようにするため、 そのブログ自身のIDを含むURLは抽出しないような処理をしたいと思います。 例えば、ライブドアでは、ブログのIDは、 http://blog.livedoor.jp/ ID /archives/50030785.html となっているので、このID(実行例ではtakapon_ceo)を含むURLは抽出しないようにさせたいです。 このようにするには、どのようにプログラムを組めばよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • CSSを動的出力部分で対応させたい

    以下のようなソースで、動的に出力されるコンテンツのレイアウトに対応したいと思っています。 "Cat_StyleP_img_1"、"name_"、"comment_"のクラス指定したDIVエリアは動的に出力される部分です。 --CSS-- div.mainframe_ { float: right; display: inline; overflow: hidden; } div.container_ div.contents_, div.container_ div.mainframe_ { width: 700px; } div.CategoryStyleP_ { width:100%; overflow: hidden; padding-bottom: 20px; } div.CategoryStyleP_Line_ { width: 102%; overflow: hidden; padding: 10px 0 10px 10px; margin-bottom: 10px; } div.CategoryStyleP_Item_ { float: left; display: inline; width: 340px; margin-right: 10px; padding: 10px 0; overflow: hidden; background: #fff; } div.CategoryStyleP_Item_ .Cat_StyleP_img_ { float: left; display: inline; width: 140px; } div.CategoryStyleP_Item_ .Cat_StyleP_main_ { float: left; display: inline; width: 180px; padding-right: 10px; } div.CategoryStyleP_Item_ h3.name_ { padding-bottom: 5px; margin-bottom: 10px; border-bottom: 1px solid #cfcfcf; font-size: 14px; font-weight: bold; } div.CategoryStyleP_Item_ div.comment_ img { margin: 0 0 10px 0; } --html-- <body > <div class="container_"> <div class="contents_"> <div class="mainframe_"> <div class="CategoryStyleP_"> <div class="CategoryStyleP_Line_ heightLineParent"> <div class="CategoryStyleP_Item_"> <div class="Cat_StyleP_img_"> <a href="#"><img src="img/usr/cat-sample.png" alt="動的出力画像1"></a> </div> <div class="Cat_StyleP_main_"> <h3 class="name_"> <a class="category_name_" href="#">タイトルA</a> </h3> <div class="comment_">コメントです。ここにはコメントが入ります。コメント、コメント。 </div> </div> </div> <div class="CategoryStyleP_Item_"> <div class="Cat_StyleP_img_"> <a href="#"><img src="img/usr/cat-sample.png" alt="動的出力画像2"></a> </div> <div class="Cat_StyleP_main_"> <h3 class="name_"> <a class="category_name_" href="#">タイトルB</a> </h3> <div class="comment_">コメントです。ここにはコメントが入ります。コメント、コメント。 コメント、コメント。</div> <span class="comment_">コメント、コメント。</span><span class="comment_">コメント、コメント。</span><span class="comment_">コメント、コメント。</span></div> </div> </div> </div> </div> </div> </div> </body> このレイアウトで出力する画像が無かった場合、"Cat_StyleP_img_1"のDIV自体が出力されない 仕様なのですが、画像の出力がない場合に、その他2つ("name_"、"comment_")の要素を横に広げて、 画像の出力が無かった場合の空きスペースが埋まるようにしたいのですが、何か良い方法はありませんでしょうか? JavaScriptではなくCSSで何とか対応したいと考えています。 お助け下さい、何卒宜しくお願いします。

    • 締切済み
    • CSS
  • ブログのHTMLからtrackback:pingの抽出(HTMLにrdf要素がないブログ)

    以前、「ブログのHTMLからtrackback:pingを抽出したい」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1710072 の質問をしたものです。 前の質問でしたように、一般的なブログでは、trackback ping URLは、 ブログの記事のHTMLの中の、rdf:Description要素の中の、 trackback:pingのところに記述されています。 しかし、上記に当てはまらないブログもありました。 例えば、ヤプログやドリコムブログです。 これらのブログでは、HTML中でrdf:Description要素自体が記述されておらず、 以下のような形でtrackback ping URLが記述されています。 例)ヤプログ(trackback ping URLはhttp://yaplog.jp/example/tb_ping/22) <html lang="ja"> <head> <title> … <td width="5" background="/blog/template/37/img/entryl.gif">&nbsp;</td> <td> <table width="350" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="entry_text"> この記事へのトラックバックURL<br /> http://yaplog.jp/example/tb_ping/22<br><br> <div class="comment_layer"> </div>  </td> </tr> </table> </td> <td width="5" background="/blog/template/37/img/entryr.gif">&nbsp;</td> </tr> <tr> … </body> </html> このようなHTMLからtrackback ping URLである、 http://yaplog.jp/example/tb_ping/22を抽出したいです。 ブログの記事のURLを入力して、 そのブログの記事のtrackback ping URLを取得するには、 どのようにプログラムを組めばいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 初歩的かもしれませんが回り込みが上手くできません

    初歩的かもしれませんが回り込みが上手くできません イメージ的には、図のようなdivを4つ横に並べて改行、同じように繰り返したいです。 ■■■■ ■■■■ しかし、下記の様にすれば ■■■ ■ ■■■ ■ に、なってしまいます。 こういう場合、どうすればいいのでしょうか?? <div class="sample" style=" width:120px; float:left;"><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave1</a></div> <div class="sample" style=" width:120px; float:left;"><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave2</a></div> <div class="sample" style=" width:120px; float:left;"><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave3</a></div> <div class="sample" style=" width:120px; "><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave4</a></div> <div class="sample" style=" width:120px; float:left;"><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave5</a></div> <div class="sample" style=" width:120px; float:left;"><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave6</a></div> <div class="sample" style=" width:120px; float:left;"><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave7</a></div> <div class="sample" style=" width:120px; "><a href="http://okwave.jp" target="_blank"><img src="okwave.png" height="80" width="120"><br>okwave8</a></div>

    • ベストアンサー
    • CSS
  • ↓を詳しくかきました。

    たびたびすいません。今回は過去記事がすべて消えてしまいました。携帯からはみれます。投稿してみると題名は掲載されますが、記事は掲載されません。たぶんHTMLをしらないうちに触っていたんだと思います。たぶん下記の人気ブログランキング参加中当たりを触ってしまいました。今までもこのバナーを使って問題はありませんでした。たぶんEnterのボタンをどこか押していたんだと思います。 どなたか詳しい方教えて下さい。長文すいません。 <br> <div align="right"><{$category_link[entry]}> <span class="etText">/</span> <a href="<{$entry_url[entry]}>"><span class="etTime"><{$entrytime[entry]}></span></a></div> <br> <div align="center"><{$image}></div> <div class="Posi"><span class="etBody"><{$thumbnail[entry]}><br>人気ブログランキング参加中 クリックお願いします。 <a href="http://blog.with2.net/link.php?490511"><img src="http://blog.with2.net/img/banner2.gif"></a> <br> </span></div> <div align="right"><span class="etCommentLink">コメント ( <{$comment_link[entry]}> )</span><span class="etText"> | </span><span class="etTBLink">Trackback ( <{$trackback_link[entry]}> )</span> </div> <div><img src="/images/clear.gif" width="15" height="15" alt="" /></div> </td> </tr> </table> </td> </tr>

専門家に質問してみよう