Web検索API

Google Web Search APIは2010/11/1から非推奨となり 2016/04/29で廃止され、以降はCustom Search APIを使用することとされています。Google Web Search API (Deprecated) | Google Developers

Web検索 (WebSearch)

var webSearch = new google.search.WebSearch();

検索結果をSearchControlに表示するならば、作成したWebSearchオブジェクトを、SearchControl.addSearcher()でSearchControlに追加します。

サンプルコード

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

<script type="text/javascript">

    function OnLoad()
    {
        var webSearch = new google.search.WebSearch();
        webSearch.setSearchCompleteCallback( this, SearchComplete, [ webSearch ] );
        webSearch.execute( keyword );
    }

    function SearchComplete( searcher )
    {
        var results = searcher.results;
    }

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

</script>

検索条件

google.search.Searchのメソッド
メソッド 説明
setResultSetSize 検索結果の数を設定する

(SearchControlのメソッドと同一)

setQueryAddition 検索対象とするファイルの種類などを制限する

search.setQueryAddition("filetype:pdf");

google.search.WebSearchのメソッド
メソッド 説明
setRestriction セーフサーチおよびURLパラメータのオプションで結果を制限する
setSiteRestriction 検索対象を特定のURL、またはカスタム検索エンジンだけに制限する

setRestriction

セーフサーチ、検索対象とする言語と地域および重複した結果の除外を指定できます。

.setRestriction( type, opt_value )
searcher.setRestriction(
    google.search.Search.RESTRICT_SAFESEARCH,
    google.search.Search.SAFESEARCH_OFF
    );

第1引数をRESTRICT_EXTENDED_ARGSとすると、複数のパラメータを同時に設定できます。

searcher.setRestriction(
    google.search.Search.RESTRICT_EXTENDED_ARGS,
    {
      "lr":"lang_de",
      "filter":"0"
    } );

指定可能なパラメータはlr、gl、filterの3つで、これらはURLパラメータのオプションと同一の意味を持ちます。

setSiteRestriction

検索対象と特定のURLもしくはカスタム検索エンジンだけに制限できます。

.setSiteRestriction(
  site,                   // 検索対象とするURLの一部、もしくはカスタム検索エンジンID
  opt_refinement,         // カスタム検索の絞り込みラベル
  opt_moreResultsTemplate // カスタム検索のテンプレートのURL
  )

たとえばexample.comだけを検索対象とするには、

searcher.setSiteRestriction( 'example.com' );

とします。カスタム検索エンジンを対象とするには、URLの代わりにカスタム検索エンジンIDを指定します。

searcher.setSiteRestriction( '0123456789:xx' );

さらに検索結果を絞り込むならば、検索ラベルを指定します。

searcher.setSiteRestriction( '0123456789:xx', 'bar' );

引数にnullを渡すと、検索対象の設定がクリアされます。

結果プロパティ

Property Description
.unescapedUrl Supplies the raw URL of the result.
.url Supplies an escaped version of the above URL.
.visibleUrl Supplies a shortened version of the URL associated with the result. Typically displayed in green, stripped of a protocol and path.
.title Supplies the title value of the result.
.titleNoFormatting Supplies the title, but unlike .title, this property is stripped of html markup (e.g., <b>, <i>, etc.).
.content Supplies a brief snippet of information from the page associated with the search result.
.cacheUrl Supplies a url to Google's cached version of the page responsible for producing this result. This property may be null indicating that there is no cache, and it might be out of date in cases where the search result has been saved and in the mean time, the cache has gone stale. For best results, this property should not be persisted.
GwebResult - Properties - Class Reference - Google Web Search API (Deprecated) | Google Developers

検索コントロール (Search Control)

実行例

Loading...

サンプルコード

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

<script type="text/javascript">

  function OnLoad()
  {
      // 検索コントロールを作成する
      var searchControl = new google.search.SearchControl();

      // 検索コントロールにWeb検索のサーチャーを追加する
      searchControl.addSearcher( new google.search.WebSearch() );

      // 検索コントロールを描画する
      searchControl.draw( document.getElementById( 'content' ) );

      // 検索を実行する
      searchControl.execute( keyword );
  }


  // Search APIをロードする
  google.load( 'search', '1' );

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

</script>

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

SearchControlのメソッド

メソッド 説明
addSearcher SearcherオブジェクトをSearchControlに追加する。また第2引数にSearcherOptionsオブジェクトを渡すことで、コントロールの挙動をカスタマイズできる。
draw  
execute  
cancelSearch  
clearAllResults  
setOnKeepCallback  
setSearchCompleteCallback  
setSearchStartingCallback  
setTimeoutInterval  
setResultSetSize 検索結果の数を設定する
  • google.search.Search.LARGE_RESULTSET … 8
  • google.search.Search.SMALL_RESULTSET … 4
  • google.search.Search.FILTERED_CSE_RESULTSET … 10 (ただしカスタム検索エンジンを使用している場合に限る)
setLinkTarget 検索結果のリンクをクリックしたときの挙動を設定する
  • google.search.Search.LINK_TARGET_BLANK
  • google.search.Search.LINK_TARGET_SELF
  • google.search.Search.LINK_TARGET_TOP
  • google.search.Search.LINK_TARGET_PARENT
setNoResultsString  

google.search.SearcherOptions

var options = new google.search.SearcherOptions();
options.setExpandMode( google.search.SearchControl.EXPAND_MODE_PARTIAL );

var searchControl = new google.search.SearchControl();
searchControl.addSearcher( new google.search.WebSearch(), options );
google.search.SearcherOptionsのメソッド
メソッド 説明
setExpandMode 検索結果の展開モード
定数 表示イメージ
google.search.SearchControl.
EXPAND_MODE_CLOSED
google.search.SearchControl.
EXPAND_MODE_PARTIAL
google.search.SearchControl.
EXPAND_MODE_OPEN
setRoot 検索結果を描画するDOM要素を指定する。この指定はSearchControl.draw()で指示する要素よりも優先される。
setVideoResultsTbHeight  
setImageResultsTbHeight  
setNoResultsString  

JavaScriptを使用しない方法

http://ajax.googleapis.com/ajax/services/search/web?
Flash and other Non-Javascript Environments

URLパラメータ

変数 説明 記述例
q クエリまたは検索式 q=Paris%20Hilton
v プロトコルバージョン v=1.0
userip 検索をリクエストしたエンド ユーザーのIPアドレス userip=192.168.0.1
rsz 結果の取得数。有効な値は1~8 rsz=4
hl ホストの言語

(この値が指定されない場合には、HTTPヘッダのAccept-Languageからシステムが自動で決定する)

hl=fr
key アプリケーションキー (AJAX APIキー) key=your-key
start 検索結果の取得ページ start=4
callback コールバック関数 callback=FunctionName
context   context=bar
オプション
変数 説明 記述例
cx カスタム検索エンジンのID cx=000455696194071821846:reviews
cref リンク型カスタム検索エンジンの仕様を定義するファイルのURL cref=http%3A%2F%2Fwww.google.com%2Fc
se%2Fsamples%2Fvegetarian.xml
safe セーフサーチ
  • active … 強
  • moderate … 中
  • off … なし
safe=moderate
lr 検索対象にする言語

(使用可能な値はSearch Labelsにある)

lr=lang_ja
filter 重複した結果の除外
  • 0 … 除外しない
  • 1 … 除外する
filter=1
gl 検索対象とする地域

(使用可能な値はISO 3166-1のalpha-2 code)

gl=jp
Flash and other Non-Javascript Environments - Class Reference - Google Web Search API - Google Code

結果プロパティ

プロパティ 説明
GsearchResultClass 結果の種類。Web検索では、GwebSearch
unescapedUrl エスケープされていないページURL
url ページURL
visibleUrl ページ ドメイン
cacheUrl キャッシュのページURL
title ページ タイトル
titleNoFormatting <b>で強調されていないページ タイトル
content ページの概略

取得例

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton
{

  "responseData": {
    "results": [
      {
        "GsearchResultClass": "GwebSearch",
        "unescapedUrl": "http://parishilton.com/",
        "url": "http://parishilton.com/",
        "visibleUrl": "parishilton.com",
        "cacheUrl": "http://www.google.com/search?q=cache:X8EQ8TIrk5QJ:parishilton.com",
        "title": "<b>Paris Hilton</b>",
        "titleNoFormatting": "Paris Hilton",
        "content": "Oprah Magazine Love PH Shoes! Oprah- Feb sky (1) · Oprah- Feb sky (2). Browse more styles from the <b>Paris Hilton</b> Shoe Collection here! Jan 20, 2012 in Fashion, Magazines, Photos, Products | Permalink | Comments (0). Reblog (0) | <b>...</b>"
      },
      {
        "GsearchResultClass": "GwebSearch",
        "unescapedUrl": "https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%AA%E3%82%B9%E3%83%BB%E3%83%92%E3%83%AB%E3%83%88%E3%83%B3",
        "url": "https://ja.wikipedia.org/wiki/%25E3%2583%2591%25E3%2583%25AA%25E3%2582%25B9%25E3%2583%25BB%25E3%2583%2592%25E3%2583%25AB%25E3%2583%2588%25E3%2583%25B3",
        "visibleUrl": "ja.wikipedia.org",
        "cacheUrl": "http://www.google.com/search?q=cache:LgS5ChmR2f0J:ja.wikipedia.org",
        "title": "<b>パリス・ヒルトン</b> - Wikipedia",
        "titleNoFormatting": "パリス・ヒルトン - Wikipedia",
        "content": "パリス・ホイットニー・ヒルトン(Paris Whitney Hilton, 1981年2月17日 - )は アメリカ合衆国のソーシャライト、ファッションモデル、ファッション <b>....</b> また自身が主演 した「プリティ・ライフ <b>パリス・ヒルトン</b>の学園天国」で映画プロデューサーとしてデビュー した。"
      },
      {
        "GsearchResultClass": "GwebSearch",
        "unescapedUrl": "https://en.wikipedia.org/wiki/Paris_Hilton",
        "url": "https://en.wikipedia.org/wiki/Paris_Hilton",
        "visibleUrl": "en.wikipedia.org",
        "cacheUrl": "http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org",
        "title": "<b>Paris Hilton</b> - Wikipedia, the free encyclopedia",
        "titleNoFormatting": "Paris Hilton - Wikipedia, the free encyclopedia",
        "content": "<b>Paris</b> Whitney <b>Hilton</b> (born February 17, 1981) is an American businesswoman, heiress, and socialite. She is a great-granddaughter of Conrad <b>Hilton</b> (founder of <b>Hilton</b> Hotels). <b>Hilton</b> is known for her controversial participation in a sex tape in <b>...</b>"
      },
      {
        "GsearchResultClass": "GwebSearch",
        "unescapedUrl": "http://www.parishiltonzone.com/",
        "url": "http://www.parishiltonzone.com/",
        "visibleUrl": "www.parishiltonzone.com",
        "cacheUrl": "http://www.google.com/search?q=cache:EXq0MGRNiNoJ:www.parishiltonzone.com",
        "title": "<b>Paris Hilton</b> Zone | <b>Paris Hilton</b> Pictures, Pics, Photos",
        "titleNoFormatting": "Paris Hilton Zone | Paris Hilton Pictures, Pics, Photos",
        "content": "Aug 27, 2011 <b>...</b> 9000+ new <b>Paris Hilton</b> pictures, Paris wallpaper, lyrics, audio, video, daily Paris pics &amp; news."
      }
    ],
    "cursor": {
      "resultCount": "41,300,000",
      "pages": [
        {
          "start": "0",
          "label": 1
        },
        {
          "start": "4",
          "label": 2
        },
        {
          "start": "8",
          "label": 3
        },
        {
          "start": "12",
          "label": 4
        },
        {
          "start": "16",
          "label": 5
        },
        {
          "start": "20",
          "label": 6
        },
        {
          "start": "24",
          "label": 7
        },
        {
          "start": "28",
          "label": 8
        }
      ],
      "estimatedResultCount": "41300000",
      "currentPageIndex": 0,
      "moreResultsUrl": "http://www.google.com/search?oe=utf8&ie=utf8&source=uds&start=0&hl=ja&q=Paris+Hilton",
      "searchResultTime": "0.15"
    }
  },
  "responseDetails": null,
  "responseStatus": 200

}
取得結果は整形済み

レスポンスで、"Suspected Terms of Service Abuse. Please see http://code.google.com/apis/errors"と返される場合には、リクエストのパラメータ (userip) にエンドユーザーのIPアドレスを含めることで、この問題を回避できることがあります。

参考