追記:2019/03/17
2019/01に、YQL APIが終了したようです。この方式はもう使えません。
追記:2017/09/16
・Yahoo!ニュース AOSSL対応によるURL変更のお知らせ
・Yahoo!ニュース - RSS
yahooニュースのRSSが、2017/03頃から変更になったようなので、それに合わせて修正しました。
rssの中身(構造)は同じなので、RSSのURLを変更しただけです。
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を書いても良いかもと思う。スポンサーリンク
コメントを残す