目的
自分の好みの仕様にフィルタリングしたGoogleニュースを JSON
形式で取得したい。
jQuery
を多用する開発者であれば XML
形式の RSS
形式よりも JSON
形式で取りたいですよね。
いい方法があったのでご提案です。
参考にした資料
GoogleニュースのRSSを取得する方法 |
RSSフィードをJSONとして受け取る方法~Google Feed APIの応用 |
Googleニュースを自分仕様にフィルタして得る
GoogleニュースのRSSを取得する方法 を参考にさせて頂きました。
リンク先のブログそのままの内容ですが、こちらにも記載させて頂きます。
要するに、Googleニュースを自分仕様にフィルタして RSS
または ATOM
形式で入手します。
以下の API
に GET
リクエストを送信すると得られます。
URL
http://news.google.com/news
パラメータ
key | value | 備考 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hl | ja | 言語を指定するパラメータのようです。 日本語の記事が欲しいので、 ja と指定。 | ||||||||||||||||||
ned | us | どの国のニュースか。 参考にしたサイトでは、なぜか us と設定していますが、日本のニュースが取れています。(理由は分かりませんが、 jp と指定するとエラーとなってしまうので、参照先記事を踏襲します) | ||||||||||||||||||
ie | UTF-8 | INPUT ENCODEING の略なんでしょうか。 元の記事のエンコードを指定すると予想します。 UTF-8 が主流なのでこれで良いと思います。 | ||||||||||||||||||
oe | UTF-8 | OUTPUT ENCODING の略なんでしょうか。 取得するRSSまたはATOMデータのエンコードを指定するようです。 これも UTF-8 を指定します。 | ||||||||||||||||||
output | rss|atom | rss か atom のどちらかを指定します。 | ||||||||||||||||||
topic |
| 指定してもしなくてもいいようです。 Googleニュースにあるトピックに絞れるようです。 ただ、 q (キーワード)との併用はできないようです。 | ||||||||||||||||||
q | {キーワード} | 指定したキーワードを含むニュースに絞ってくれます。 ただ、 topic との併用はできないようです。 |
取得例
上記のパラメータを実際に設定したURLの例を以下に。
トピック="スポーツ" の記事のRSSを取得する
http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=s
"長友" というキーワードで絞った記事のRSSを取得する
http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&q=長友
RSS形式のXMLをJSONで取得する方法
RSSフィードをJSONとして受け取る方法~Google Feed APIの応用 を参考にさせて頂きました。
まさにタイトルの通りのことが出来てしまいます。
ただ、GoogleニュースのRSSを取得する際のURLに &
や ?
が含まれていて、少し特殊な為、普通に参考サイトの通りに行なってもうまくいきません。
当記事の価値はここにあります。
APIの使い方
参考サイトでは、こうあります。
https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q={RSSフィードのURL}&num={取得したい記事数}
この通り、上記の長友のニュースに絞ったRSSを取得するURLを埋め込むと、
https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&q=長友&num=-1
となります。
ただ、このURLでリクエストすると、
{"responseData": null, "responseDetails": "Feed could not be loaded.", "responseStatus": 400}
が返されてしまいます。
URL内に q
パラメータが2つあることも原因の1つかもしれません。
URLの規則上、&
が リクエストパラメータの区切り文字になっていますが、引数の中にも &
が含まれているため、API側がURLのパースに失敗しているのだと思います。
そこで登場するのが、「短縮URL」です。
Google が提供する Google URL Shortener
を使えばいいんです!
Google URL Shortener
https://goo.gl/
にアクセスしてみて下さい。
Paste your long URL here
と書かれているところに、長友ニュースを取得するためのURLを貼り付けて、Shorten URL
と書かれたボタンをクリックします。
すると、URLが短縮された文字列が生成されるので、これを使えばいいのです。
XML
の RSS
でもいいのですが、(私は)断然 JSON
形式のほうが扱い易いので記事として紹介でした。
1件のコメント
煮詰まっていた問題が解決しました!
こんなやり方があるんですね。
ありがとうございます!!