【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上に公開する場合は、著作権に注意して利用するようにしましょう。

 

PHPの本