【YQL API利用】JavascriptでRSSを読み込んで表示する方法【2017年】

  • 投稿 : 2017-01-31
  • 更新 : 2019-03-17
追記:2019/03/17
2019/01に、YQL APIが終了したようです。この方式はもう使えません。

追記:2017/09/16
Yahoo!ニュース AOSSL対応によるURL変更のお知らせ
Yahoo!ニュース - RSS

yahooニュースのRSSが、2017/03頃から変更になったようなので、それに合わせて修正しました。
rssの中身(構造)は同じなので、RSSのURLを変更しただけです。

https://news.yahoo.co.jp/pickup/rss.xml

サンプルでは、YahooニュースのRSSを読み込みます。javascriptの場合はjson形式のほうが簡単なので、xmlからjsonに変換してくれるサービスがあると便利です。



以前は、Google Feed APIが使えたのですがとうとう廃止されたらしいので、上記の記事を参考にYQL(Yahoo Query Language) APIを利用して実装してみました。

<html>
  <head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
   //読み込み最大記事数
   var max_length = 5; 

  $(function(){
    $.getJSON("https://query.yahooapis.com/v1/public/yql?callback=?", {
      q: "select * from rss where url='https://news.yahoo.co.jp/pickup/rss.xml'",
      format: "json"
    }, function(json) {
      for (var i = 0; i < json.query.results.item.length; i++) {
        if(i == max_length) break;

        var entry = json.query.results.item[i];

        var title = entry.title;//記事タイトル
        var link = entry.link; //記事へのリンク
        //タイトルを挿入
        $('#feed').append("<li><a href='" + link  +"'>"+ title +"</a></li>"); 

      }
    });
  });
</script>
  </head>
  <body>
  <div id="feed"><!-- この位置に挿入される --></div>
  </body>
</html>

上記をhtmlファイルとして保存して、ブラウザで表示させると、yahooニュース5件が表示されるかと思います。

YQL APIについて

上記のサンプルだと、「select * from rss where url='https://news.yahoo.co.jp/pickup/rss.xml」の部分が重要なところです。なんとなく、SQL文みたいですね。


https://developer.yahoo.com/yql/console/

上記に入力すると、どういうjson形式で返却されるかがわかるので、それを元に作ります。

YQL APIの制限

Hourly Cap 2,000 requests/hour per IP 20,000 requests/hour per IP
Overview - Yahoo Developer Network
APIのコール数が 1時間あたり2,000まで の場合、APIキーは必要ないようです。Public Endpoint ( /v1/public/* ) が使えます。
それ以上の場合は、APIキーを取得することで 1時間あたり20,000まで 使えるようになるとのこと(1日あたり100,000まで)。OAuth Endpoint ( /v1/yql/* ) を使います。
Google Feed API から YQL API へ移行したお話 - Qiita

PHP使える人は・・・

xmlからjsonに自前で変換するPHPを書いても良いかもと思う。
スポンサーリンク