【PHP】RSSでYahooニュースの情報を取得する
RSSの情報を取得して、ネットで表示できないかなぁと思い、調べてみました。
その結果、PHPを使えば簡単にRSSの情報を取得して表示することができました。
今回は例としてヤフーニュースのRSSを利用してプログラムを作成してみました。
PHPでYahooニュースのRSSを読み込んで表示するプログラム
<?php class RssYahoo{ // 引数のURLからRSSデータを取得し、HTMLに成形し出力する function getXml($url){ $rssdata = simplexml_load_file($url); return $rssdata; } // 引数のURLからRSSデータを取得し、HTMLに成形し出力する function getHtml($url, $amount){ // XMLを取得する $rssdata = $this->getXml($url); // rss元から取得できたアイテム数を取得する $num_of_data = count($rssdata->channel->item); // 引数で指定された取得記事数がnullでない場合 if($amount != null){ // 指定された取得記事数が最大記事数より少ない場合 if($amount < $num_of_data){ // 指定された記事数分だけ取得するように設定する $num_of_data = $amount; } } // 出力内容 $outdata = ""; // 取得したXMLの情報を基に、ソースを出力する for ($i=0; $i<$num_of_data; $i++){ $entry = $rssdata->channel->item[$i]; $date = date("Y年 n月 j日", strtotime($entry->pubDate)); $title = $entry->title; $link = $entry->link; // 記事リンク付きのタイトルをソースとして設定する $outdata .= ' <li><a href="' . $link . '" target="_brank">' . $date; $outdata .= '<span>' . $title . '</span>'; $outdata .= '</a></li> '; } // ソースを出力する echo ' <ul>' . $outdata . '</ul> '; } } // RSSのURLを指定する $url = "https://news.yahoo.co.jp/pickup/rss.xml"; $rss = new RssYahoo(); // 2記事だけ取得する $rss->getHtml($url, 2); // 取得できる記事すべてを対象とする場合は第2引数をnullにする //$rss->getHtml($url, null); ?>
今回はヤフーニュースの「トピックス-主要」のURLから
情報を取得するよう設定していますが、
$urlでRSSのURLを指定しているので、このURLを変更することで、
他のトピックスからも情報を取得することができます。
ヤフーニュースのRSS一覧は以下から確認ができます。
https://headlines.yahoo.co.jp/rss/list
実際に上記のプログラムを使用する場合は、RssYahooクラスを外部ファイルに外出しして、
使用したい場面で呼び出してあげるようにすると、汎用的に利用でき、ソースも整理できます。
これでRSSから情報を取得して表示することは無事できたのですが、
はたしてどこまで表示してよいかが、著作権の観点からわかりませんでした。
使用し、RSSの情報を取得してWEB上に公開する場合は、著作権に注意して利用するようにしましょう。