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)にあります。