blogのRSSデータよりtitleとdateの取得を

このQ&Aのポイント
  • blogのRSSデータからtitleとdateを取得する方法について質問です。
  • 以前、内容自体を表示させることはできるようになったが、titleなどを取得することができない問題があります。
  • 今回の質問は、RSSデータのtitleとdateを取得し、別のページに表示したいと考えています。具体的なコードのアドバイスをいただけると助かります。
回答を見る
  • ベストアンサー

blogのRSSデータよりtitleとdateの取得を・・・

RSSデータよりtitleとdateの取得を取得し、別ページに表示したいと考えています。 以前内容自体を表示させるものは、お手伝いいただきできるようになったのですが、titleなどを取得する事ができませんでした・・・ (以下がRSSより本文を取得して、表示するPHPコードの質問となります。) http://okwave.jp/kotaeru.php3?q=2053985 上記コードでtitle,dateを取得して、表示したいと考えています。 素人考えだと、$contents=$root->getElementsByTagName("encoded"); の部分で本文を取得しているので、これを$contents=$root->getElementsByTagName("title");などとして、取得できないかと試したのですが、うまくいきませんでした・・・ titleとdateの取得をして表示するコード・・・アドバイスでもいいですのでご教授の方お願い致します。

  • xtort
  • お礼率24% (37/149)
  • PHP
  • 回答数2
  • ありがとう数2

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

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

>$link=$item->getElementsByTagName("link"); >で取得して、それで<A>タグでtitleを囲む感じにすればよいのでしょうか? #1の投稿でも書いていますが、 getElementsByTagName( ) を使って取り出したものはたとえ合致するものが1つしかなくてもノードではなくてノードリストなので、 $link->item(0)->nodeValue のようにアクセスする必要があると思いますが、それだけ気をつければ大丈夫だと思います。 * DOMによる方法が面倒くさければSimpleXML を使うとすっきりするかもしれません。

xtort
質問者

お礼

ありがとうございました。 XMLの考え方が分かっていなかったみたいですね・・・ SimpleXMLの方も試してみたいと思います。

その他の回答 (1)

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

修正してみました ---------------------------------------------------------------- <?php $dom = new domDocument; $dom->load("index.xml"); $root=$dom->documentElement; $items=$root->getElementsByTagName("item"); foreach($items as $item){ $title=$item->getElementsByTagName("title"); print mb_convert_encoding($title->item(0)->nodeValue,"SJIS","UTF-8") . "\n"; $date=$item->getElementsByTagName("date"); print $date->item(0)->nodeValue . "\n"; $contents=$item->getElementsByTagName("encoded"); $html= $contents->item(0)->nodeValue . "\n"; print mb_convert_encoding($html,"SJIS","UTF-8") . "\n"; } ?>

xtort
質問者

お礼

有難う御座います! 動作確認がまだ出来ていませんが、勘違いをしていたせいで動かなかったようですね・・・ ちなみにlinkを取得しタイトルより飛ばしたい場合は、 $link=$item->getElementsByTagName("link"); で取得して、それで<A>タグでtitleを囲む感じにすればよいのでしょうか?

関連するQ&A

  • RSSからblog(ブログ)の本文を抽出 特定のブログのRSSにて…

    以前、「RSSからblog(ブログ)の本文を抽出したい」という質問をした者です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1677591 以前ご教授いただいた方法でプログラムを作り、 javaのDOMを使ってRSSからブログの本文を抽出することができましたが、 (参考:http://www.hellohiro.com/xmldom.htm HelloWorldDOMPageList.java) 特定のブログのRSSからは本文のデータを取得することができませんでした。 例えば、exiteやFC2などのブログのRSSからはデータを取得することができませんでした。 リンクや、タイトルなどは問題なく取得できるのですが、 本文が記述されている要素(例えば、exiteならdescription,FC2ならcontent:encoded) 内のデータを取得しようとすると、プログラムの結果として、 何も取得できずに、空白となってしまいます。 ライブドアやヤフーなど他のブログのRSSでは成功したのですが… 何か問題があるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • XML
  • PHPを使ってRSSコードから画像取得をしたい

    PHP初心者です。 PHPを使ってRSSコードから画像取得をしたいと考えていますが、 <content:encoded>や<description>以外の要素を見て抜き出すことはできないのでしょうか? 例えばこのRSSコード内の http://ch.nicovideo.jp/kindan-nama/live?rss=2.0 <nicoch:live_thumbnail>の要素を見て http://live.nicovideo.jp/thumb/175454.jpg ↑この画像を取得することはできないのでしょうか? 調べているうちにRSSは全ての情報を提供してくれているわけではないということは分かってきましたが、 RSSコードを見てどこからどこまでが提供されているのかが分からず... 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • RSSからblog(ブログ)の本文を抽出したい

    RSSからblogの本文を抽出するプログラムを 作りたいと思っています。 例えば、以下のようなRSSに対して (省略部分があります。) <?xml version="1.0" encoding="UTF-8" ?> - <rdf:RDF xmlns:rdf="http://~> + <channel rdf:about="http://~"> - <item rdf:about="http://blog.livedoor.jp/~"> <title>ショッピング</title> <link>http://blog.livedoor.jp/~</link> <description>今日はとてもいい天気だったので…</description> <dc:creator>shows</dc:creator> <dc:date>2005-09-24T22:00:21+09:00</dc:date> <dc:subject>ブログ</dc:subject> - <content:encoded>  - <![CDATA[   <a href="http://image.blog.livedoor~">   </a>今日はいい天気だったので、<br>   ショッピングに出かけました<br>   <br>     本文略   <br>   新しいibookが欲しいなぁ~<br>  ]]> </content:encoded> </item> (以降略) <content:encoded>のCDATAセクションの中の、 今日はいい天気だったので ~ 新しいibookが欲しいなぁ~ までがブログの本文なのでこれを抽出したいと思っています。 そこで、現在ではjavaを使ってDOMで抽出しようと試みているのですが、 こちらのサイト http://www.hellohiro.com/xmldom.htm のHelloWorldDOMPageList.javaを参考にしてプログラムを作ったのですが、 title,link,descriptionの抽出は出来ましたが、 ブログ本文が記述されている、 <content:encoded> or <![CDATA[ 内の要素(データ)を取得できません。 どのような方法(プログラム)をすれば取得できるようになるでしょうか? よろしくお願いします。

    • ベストアンサー
    • XML
  • 取得したRSSフィードの吐き出し方【急募】

    javascript などを使わず、RSSをwebサイトに表示させる方法はありますでしょうか? 簡単にやりたい事をかきますと、 通常phpなどを使用してRSSを表示させると、 コードソースにはRSSを読みだすphpなどのタグしか表示されないです。 <***RSSを表示させる設定についてのタグ~****> <*************>~~~~</******> <!-- ここに記事が表示されます 等の文言 --> </script> しかしそれを、取得したRSSを表示させる際に自動的にページが更新されたように見せるため、 取得したRSSのタイトルなどを挿入部分に表示させたいです。 <ul> <li>記事タイトル~~~</li>  }     ・               }     ・               }--取得してきたRSSの記事タイトルなどを     ・               }  静的コードに書き出し、自動で更新 <li>記事タイトル~~~</li>  } <ul> うまく説明できませんが、やりたい事は上記のような事です。 お分かりの方、ご教授願います!

  • RSS 日付の取得方法

    見てくださった方、こんにちは。 php超初心者のkitakaruと申します。 ホームページを作っていて、 RSSを取得して表示させたいのですが、 それが出来ずにほとほと困っています。 htmlやcssは多少分かるのですが、 phpは全くといっていいほど分かりません。 どなたか詳しい方がいらしゃいましたら、 ご教示頂けますでしょうか。 よろしくお願い致します。 呼び出しているxmlの形式はrss2.0です。 http://i-njoy.net/tips/rss.shtml こちらのサイトを参考に 以下のようソースを書きました。 (1)のpubdateというタグの値を引っ張ってこれず そこで行き詰ってしまっています。 ちなみにタイトルなどはきちんと表示されています。 分かる方、どうぞよろしくお願いします。 <?php require_once 'rss_fetch.inc'; require_once 'code_table.ucs2jis'; require_once 'jcode.php'; $url = 'http://www.xxxxxxxxxxxxx/index.xml?mode=rss'; $rss = fetch_rss($url); $title = $rss->channel['title']; $date1 = htmlspecialchars($item['pubdate']);  //(1)rss 出力日時を取得して 変数data1に代入 $date2 = date("Y.m.d", strtotime($date1));   //(2)表示形式変換 data1を変換したものを変数data2に代入 //JcodeConvert($str, $from, $to) //0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8 $title = JcodeConvert($title, 4, 4); foreach ($rss->items as $item ) { $title = $item[title]; $title = JcodeConvert($title, 4, 4); $url = $item[link]; echo '<li><dl><dt>'.$date1.'</dt><dd><a href="'.$url.'">'.$title.'</a></dd></dl></li>'; //(3)変数data2を出力 } ?>

    • ベストアンサー
    • PHP
  • SeesaaブログのRSS取得で、ブログの本文も取得したいのですが・・・。

    RSS取得を使用し、更新情報を載せるまでは出来ました。 タイトルだけではなく、本文も掲載したいです。 Seesaaでは可能でしょうか? RSS用の特殊タグが必要かと思うのですが、タグがわかりません。 一応実験的に試してみたタグが、 「rss_feeds.description」だったのですが、出来ませんでした。 RSS取得のhtmlは <div class="sidetitle"><% content.title %></div> <div class="side"> <% content.header -%> <% loop:list_rss -%> <a href="<% rss_feeds.page_url %>" target="_blank"><% rss_feeds.name %></a><br /> <% /loop -%> <% content.footer -%> </div>

  • RSSを取得したいのですが

    下記サイトを参考に、以下のコードを埋め込んだのですが、 http://plaza.rakuten.co.jp/kemusiro/diary/200601150000/ 日付が (1970/01/01 00:00:00) と表示された上に文字化けしてしまいます。 MagpieRSSはmagpierss-0.72.tar.gzから必要ファイルを、index.phpの下におきました。 正常に表示させるためには、どう直せばよいでしょうか? <?php require_once('magpierss/rss_fetch.inc'); define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); $count = 5; $length = 60; $url = 'http://api.plaza.rakuten.ne.jp/kemusiro/rss/'; $rss = fetch_rss($url); echo "<ul>"; array_splice($rss->items, $count); foreach ($rss->items as $item) { $href = $item['link']; $title = mb_convert_encoding($item['title'], "SJIS", "auto"); $date = date('Y/m/d H:i:s', parse_w3cdtf($item['dc']['date'])); $description = mb_convert_encoding($item['description'], "SJIS", "auto"); if (mb_strlen($description) > $length) { $description = mb_strcut($description, 0, $length) . "..."; } echo "<li>"; echo "<FONT color=\"#ff8040\">(" . $date . ")</FONT> "; echo "<a href=$href>" . $title . "</a><BR>"; echo $description . "</li>"; } echo "</ul>"; ?>

    • 締切済み
    • PHP
  • RSSからblogデータの抽出(直接URLを入力して)

    以前、「RSSからblog(ブログ)の本文を抽出したい」の質問にて、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1677591 回答を参考に、RSSからblogのタイトル・リンク・本文を 抽出するプログラムを作成させていただきました。 ところで、このプログラムは、参考サイトの http://www.hellohiro.com/xmldom.htm HelloWorldDOMPageList.javaを参考に作成したのですが、 このプログラムでは、参考サイトのプログラム中 // パースを実行してDocumentオブジェクトを取得 Document doc = builder.parse(new File("site.xml")); // ルート要素を取得(タグ名:site) Element root = doc.getDocumentElement(); System.out.println("ルート要素のタグ名:" + root.getTagName()); … にもあるように、対象となるXML(私の場合はRSS)を保存して、 そのファイルに対してプログラムを実行しています。 今回は、RSSからblog(ブログ)のタイトル・リンク・本文を抽出する際に、 対象となるRSSを一度、site.xmlなどにXML形式で保存して、 そのファイルに対してプログラムを実行するのではなく、 プログラム中でRSSのURLを入力して、 それに対してプログラムを実行できるようにしたいです。 例えば、RSSが、http://blog.livedoor.jp/example/index.rdfだとしたら、 プログラム中でこのURLを直接入力するようにして、プログラムを実行させたいです。 そのためにはどのようにプログラムを作成すればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • WordpressのRSS取得条件

    以下のコードに2010年以降のフィードのみ表示させるようにするにはどうすればよいですか? <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array('RSSフィード')); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(10); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <dl> <?php if ($maxitems == 0) echo '<dt>No items.</dt>'; else foreach ( $rss_items as $item ) : ?> <dt> <?php echo $item->get_feed()->get_title(); ?><br /> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a> </dt><?php endforeach; ?></dl>

    • 締切済み
    • PHP
  • 拡張子がrdfでRSSを取得するには

    現在、拡張子がrdfの画面からRSSを取得しようとしています。 参考として、その際の方法を以下で見つけたので、http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1321303748 実際に以下の様なソースでためしてみたのですがうまく表示されません。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html;charset=Shift_JIS"> <meta http-equiv="content-style-type" content="text/css"> <link rel="alternate" type="application/rss+xml" title="RSS" href="ホームページで表示されているURL/拡張子がrdfのファイル名"/> 。<title>タイトル</title> </head> <body> 本文 </body> </html> 実際に表示されたのは、 タイトルの「タイトル」と、 本文の本文、だけです。 以上宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう