GoogleニュースをJSONで得る

目的

自分の好みの仕様にフィルタリングしたGoogleニュースを JSON 形式で取得したい。
jQuery を多用する開発者であれば XML 形式の RSS 形式よりも JSON 形式で取りたいですよね。

いい方法があったのでご提案です。

参考にした資料

GoogleニュースのRSSを取得する方法
RSSフィードをJSONとして受け取る方法~Google Feed APIの応用

Googleニュースを自分仕様にフィルタして得る

GoogleニュースのRSSを取得する方法 を参考にさせて頂きました。
リンク先のブログそのままの内容ですが、こちらにも記載させて頂きます。
要するに、Googleニュースを自分仕様にフィルタして RSS または ATOM 形式で入手します。
以下の APIGET リクエストを送信すると得られます。

URL

http://news.google.com/news

パラメータ

keyvalue備考
hlja言語を指定するパラメータのようです。
日本語の記事が欲しいので、ja と指定。
nedusどの国のニュースか。
参考にしたサイトでは、なぜか us と設定していますが、日本のニュースが取れています。
(理由は分かりませんが、jp と指定するとエラーとなってしまうので、参照先記事を踏襲します)
ieUTF-8INPUT ENCODEING の略なんでしょうか。
元の記事のエンコードを指定すると予想します。
UTF-8 が主流なのでこれで良いと思います。
oeUTF-8OUTPUT ENCODING の略なんでしょうか。
取得するRSSまたはATOMデータのエンコードを指定するようです。
これも UTF-8 を指定します。
outputrss|atomrssatom のどちらかを指定します。
topic
irピックアップ
y社会
w国際
bビジネス
p政治
eエンタメ
sスポーツ
tテクノロジー
po話題のニュース
指定してもしなくてもいいようです。
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が短縮された文字列が生成されるので、これを使えばいいのです。

XMLRSS でもいいのですが、(私は)断然 JSON 形式のほうが扱い易いので記事として紹介でした。


1件のコメント

  • 太郎 より:

    煮詰まっていた問題が解決しました!
    こんなやり方があるんですね。

    ありがとうございます!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です