Google ニュースの情報を取得できます。
Google News Search APIは2011/5/26から非推奨となり、以降は1日あたりのリクエスト数が制限されます。News Search (Deprecated) | Google Developers
これの代替として、RSSから情報を取得する方法があります。
News Searchではデータとして結果を取得できるので、表示するときにはそれを整形して出力します。
setRestriction()メソッドで検索制限を指定します。
.setRestriction( type, value )
typeは、google.search.Search.RESTRICT_EXTENDED_ARGS
とします。
valueは下表のプロパティを参考に、{ topic: 'h', ned: 'jp' }
のようなオブジェクトとします。
プロパティ | 説明 |
---|---|
geo | 特定の地域のみを検索対象とする (これは「セクションの追加 (Add a Section)」の機能を有する言語のページでのみサポートされる) |
topic | 特定の話題のみを検索対象とする
|
ned | 特定の地域版のみを検索対象とする |
.setResultOrder( orderBy )
orderByに指定可能な値 | 説明 |
---|---|
google.search.Search.ORDER_BY_RELEVANCE | 関連性 (既定値) |
google.search.Search.ORDER_BY_DATE | 発表日時 |
検索結果はNewsSearchオブジェクトの、results[]配列で取得できます。
分類 | プロパティ | 説明 |
---|---|---|
タイトル | title | 記事のタイトル |
titleNoFormatting | 記事のタイトル (HTMLタグを含まない) | |
URL | url | 記事のURL |
unescapedUrl | 記事のURL (エンコードされていない) | |
内容 | content | 記事の内容の抜粋 |
画像 | image{} | 記事に関連した画像。以下のプロパティを持つ
|
言語 | language | 記事の言語 |
地域 | location | 記事の地域 |
日時 | publishedDate | 記事が発表された日時 |
発行者 | publisher | 記事の発行者 |
HTMLコード | html | 記事のタイトルや内容をまとめた整形化されたHTMLコード |
関連記事 | relatedStories | 関連記事の配列。配列の要素は以下のプロパティを持つ
|
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>
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 );
プロパティ | 説明 |
---|---|
queryList | 検索条件の配列。複数の要素を指定可 |
format | 表示形式。次のいずれか
|
linkTarget | リンクを開くフレーム
|
deferResumeTime | 休止状態から復帰するまでの時間。単位はミリ秒。既定値は300 |
deferBootTime | 単位はミリ秒。既定値は2500 |
displayTime | 1つの結果の表示時間。単位はミリ秒。既定値は7500 |
transitionTime | 表示の切り替えに要する時間。単位はミリ秒。既定値は400 |
プロパティ | 説明 |
---|---|
q | キーワード |
topic | トピック |
rez | 検索結果の数
|
ned | ニュースの地域版 |
scoring | 検索結果の表示順
|
geo | 検索結果の地域。次のいずれかで指定
|
設定内容の詳細は、google.elements.NewsShowにあります。
News Elementならば同様の結果を、スクリプトを記述することなく実現できます。
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)にあります。