ニュース検索API

Google ニュースの情報を取得できます。

Google News Search APIは2011/5/26から非推奨となり、以降は1日あたりのリクエスト数が制限されます。News Search (Deprecated) | Google Developers

これの代替として、RSSから情報を取得する方法があります。

News Search

News Searchではデータとして結果を取得できるので、表示するときにはそれを整形して出力します。

検索条件

  • setRestriction … 検索制限
  • setSiteRestriction … 検索対象とするニュースサイト
  • setResultOrder … 検索結果の取得順
  • setResultSetSize … 検索結果の1ページあたりの取得数 (1~8の範囲)

検索制限 (setRestriction)

setRestriction()メソッドで検索制限を指定します。

.setRestriction( type, value )

typeは、google.search.Search.RESTRICT_EXTENDED_ARGSとします。

valueは下表のプロパティを参考に、{ topic: 'h', ned: 'jp' }のようなオブジェクトとします。

プロパティ 説明
geo 特定の地域のみを検索対象とする
(これは「セクションの追加 (Add a Section)」の機能を有する言語のページでのみサポートされる)
topic 特定の話題のみを検索対象とする
  • h … トップニュース (top headlines)
  • w … 国際 (world)
  • b … ビジネス (business)
  • n … 国内 (nation)
  • t … テクノロジー (science and technology)
  • el … 選挙(elections)
  • p … 政治 (politics)
  • e … エンタメ (entertainment)
  • s … スポーツ (sports)
  • m … 健康 (health)
詳細はGoogleニュースのトピック一覧にあります。
ned 特定の地域版のみを検索対象とする

検索結果の取得順 (setResultOrder)

.setResultOrder( orderBy )
orderByに指定可能な値 説明
google.search.Search.ORDER_BY_RELEVANCE 関連性 (既定値)
google.search.Search.ORDER_BY_DATE 発表日時

結果プロパティ

検索結果はNewsSearchオブジェクトの、results[]配列で取得できます。

results[]に格納されるObjectのプロパティ
分類 プロパティ 説明
タイトル title 記事のタイトル
titleNoFormatting 記事のタイトル (HTMLタグを含まない)
URL url 記事のURL
unescapedUrl 記事のURL (エンコードされていない)
内容 content 記事の内容の抜粋
画像 image{} 記事に関連した画像。以下のプロパティを持つ
  • url … 画像のURL
  • originalContextUrl … 記事のURL
  • publisher … 記事の発行者
  • tbUrl … サムネイルのURL
  • tbWidth … サムネイルの幅 (標準で80px)
  • tbHeight … サムネイルの高さ (標準で50px)
言語 language 記事の言語
地域 location 記事の地域
日時 publishedDate 記事が発表された日時
発行者 publisher 記事の発行者
HTMLコード html 記事のタイトルや内容をまとめた整形化されたHTMLコード
関連記事 relatedStories 関連記事の配列。配列の要素は以下のプロパティを持つ
  • title
  • titleNoFormatting
  • url
  • unescapedUrl
  • language
  • location
  • publishedDate
  • publisher
  • signedRedirectUrl
clusterUrl 関連記事を掲載するGoogleのURL
GsearchResultClass 結果の型
  signedRedirectUrl  

実行例

サンプルコード

<!-- Google AJAX API ローダーのライブラリをインクルードする -->
<script type="text/javascript" src="http://www.google.com/jsapi?key=xx"></script>

<script type="text/javascript">

  function onLoad()
  {
      var restriction = { topic: 'h', ned: 'jp' };

      var newsSearch = new google.search.NewsSearch();
      newsSearch.setSearchCompleteCallback( this, SearchComplete, [ newsSearch ] );
      newsSearch.setRestriction( google.search.Search.RESTRICT_EXTENDED_ARGS, restriction );

      newsSearch.execute( '' );
  }

  function SearchComplete( searcher )
  {
      if( searcher.results )
      {
          var content = document.getElementById( 'content' );
          for( var i = 0; i < searcher.results.length; i++ )
          {
              content.appendChild( searcher.results[ i ].html );
          }
      }
  }

  google.load( 'search', '1' );
  google.setOnLoadCallback( onLoad );

</script>

<div id="content"></div>

JavaScriptを使用しない方法

http://ajax.googleapis.com/ajax/services/search/news?v=1.0&q=火事

参考

News Show

News Showは、オブジェクトを作成するだけでコントロールに埋め込まれる形で表示されます。

実行例

使用方法

基本的に、APIのライブラリをロードしてNewsShowオブジェクトを作成するだけです。

<!-- Google AJAX API ローダーのライブラリをインクルードする -->
<script type="text/javascript" src="http://www.google.com/jsapi?key=xx"></script>

<script type="text/javascript">

  function onLoad()
  {
      var content = document.getElementById( 'content' );

      // NewsShowオブジェクトを作成し、表示する
      new google.elements.NewsShow( content );
  }

  // NewsShowのAPIをロードする
  google.load( 'elements', '1', { packages : [ 'newsshow' ] } );

  // ドキュメントがロードされた後に呼び出されるハンドラ関数を登録する
  google.setOnLoadCallback( onLoad );

</script>

<div id="content"></div>

表示内容のカスタマイズ

NewsShowコンストラクタの引数に、設定オプションのオブジェクトを与えます。

var options = {
  format: '300x250',    // 表示サイズ
  queryList: [
      {
          topic: 'h',     // 表示するトピック (話題)
          rez: 'large',   // 表示すニュースの件数
      },
  ],
};

var content = document.getElementById( 'content' );
new google.elements.NewsShow( content, options );
options引数のパラメータ
プロパティ 説明
queryList 検索条件の配列。複数の要素を指定可
format 表示形式。次のいずれか
  • '728x90'
  • '300x250'
linkTarget リンクを開くフレーム
  • google.search.Search.LINK_TARGET_BLANK
  • google.search.Search.LINK_TARGET_SELF
  • google.search.Search.LINK_TARGET_TOP
  • google.search.Search.LINK_TARGET_PARENT (既定値)
上記以外の文字列を記述した場合、それをtarget属性の値とする
deferResumeTime 休止状態から復帰するまでの時間。単位はミリ秒。既定値は300
deferBootTime 単位はミリ秒。既定値は2500
displayTime 1つの結果の表示時間。単位はミリ秒。既定値は7500
transitionTime 表示の切り替えに要する時間。単位はミリ秒。既定値は400
queryListオブジェクトのパラメータ
プロパティ 説明
q キーワード
topic トピック
rez 検索結果の数
  • 'small' … 4つ
  • 'large' … 8つ
ned ニュースの地域版
scoring 検索結果の表示順
  • (無指定) … 関連性
  • d … 日時
geo 検索結果の地域。次のいずれかで指定
  • 都市名
  • 州名
  • 国名
  • 郵便番号
(※ これは英語版のニュースでしかサポートされない)

設定内容の詳細は、google.elements.NewsShowにあります。

JavaScriptを記述しない方法 (Google Web Elements)

News Elementならば同様の結果を、スクリプトを記述することなく実現できます。

RSSフィード

Googleニュースの情報はRSSでも提供されています。よってこれを解析することでも、ニュースの情報を取得できます。

パラメータ

RSSを取得するためのパラメータは、Googleニュースの検索結果に表示されるRSSアイコンのリンクから調べられます。ただしこのアイコンは日本版では表示されないため、たとえばアメリカ版などから調べる必要があります。

基本的にパラメータに「output=rss」を含めることで、レスポンスがRSSで返されます。なお、これを「output=atom」とすればAtomでも取得できます。

地域版の指定

日本版のニュースを取得するには「ned=jp」とすれば良いと推測されますが、日本版がRSSに対応しないためか、そのように指定するとRSSではないページへリダイレクトされてしまいます。よって「hl=ja」として、言語で日本語を指定します。

キーワードの指定

「q=」でキーワードを指定することで、キーワードにマッチするニュースのみを取得できます。

http://news.google.com/news?q=apple&output=rss

パラメータのより詳細な一覧が、James McKinney • Google News Search parameters (The Missing Manual)にあります。

参考

Google ニュースのヘルプ