事前準備

  • 1.デベロッパーズキットをdownload
  • 2.Googleアカウントを作って、個人識別のライセンスキーを取得する
  • 3.ライセンスキーをAPIに渡すようにロジックを書く
  • デベロッパーズキットを展開して、"GoogleSearch.wsdl"を開発するディレクトリにコピーする
  • 日本語を使用するため、Jcode.pmを用意する。

 PerlでAPI

  • あらかじめSOAP::Liteモジュールをインストール
    コマンゴプロンプトのrootで
    #perl -MCPAN -e 'install SOAP::Lite'
  • 開発用ディレクトリにお好みのPerlスクリプトを置いて実行
  • 例えば次のように使います。
    	use SOAP::Lite;
    	
    	my $googleSearch = SOAP::Lite -> service("file:GoogleSearch.wsdl");
    	my $key='ライセンスキー';
    	my $query="検索語";
    	
    	my $result = $googleSearch -> doGoogleSearch($key, $query, 0, 10, "false", "", "false", "", "latin1", "latin1");
    	print "About ".$result->{"estimatedTotalResultsCount"}."results.\n";
    API の使い方はこちらも至ってシンプルです。 $googleSearch に検索語などの情報を渡して、 doGoogleSearch() メソッドを呼び出すと、検索が実行されて、 その結果を収めた GoogleSearchResult オブジェクトが得られます。 後は、GoogleSearchResult オブジェクトから検索結果が取り出せます。   日本語で検索するには単語を UTF-8 に変換する必要があります。 Jcode.pm を使うと良いでしょう。
    	use SOAP::Lite;
    	use Jcode;
    	
    	my $googleSearch = SOAP::Lite -> service("file:GoogleSearch.wsdl");
    	my $key='ライセンスキー';
    	my $query="検索語";
    	
    	my $result = $googleSearch -> doGoogleSearch($key, jcode($query)->utf8, 0, 10, "false", "", "false", "", "UTF-8", "UTF-8");
    	print "About ".$result->{"estimatedTotalResultsCount"}."results.\n";
    Perl 5.8 以降で UTF-8 に変換する場合は、Encode モジュールを使います。 Perl 5.8 以降で Jcode.pm 2.0 を使えば自動的に Encode モジュールに ラッピングしてくれますが、その場合変換後の文字 jcode($query)->utf8 に UTF-8 フラグが立っていないために、 doGoogleSearch() メソッドが正しく文字を扱えず、化けた文字で 検索してしまうようです。
    	use SOAP::Lite;
    	use Encode qw/encode decode/;
    	use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;
    	
    	my $googleSearch = SOAP::Lite -> service("file:GoogleSearch.wsdl");
    	my $key='ライセンスキー';
    	my $query="検索語";
    	
    	my $result = $googleSearch -> doGoogleSearch($key, decode("Guess",$query), 0, 10, "false", "", "false", "", "UTF-8", "UTF-8");
    	print "About ".$result->{"estimatedTotalResultsCount"}."results.\n";

Java の場合 操作手順 [#ed4718f3]

  • Google API をインストールする
  •  利用するために、Google Web APIs devaloper's Kit とライセンスキーを、 Google Web APIsから取得する必要があります。ダウンロードファイル googleapi.zip を入手したら、解凍したフォルダ直下にある googleapi.jar をアプリケーションルート配下の「/WEB-INF/lib」フォルダにコピー。
  •  ライセンスキーは、同Google Web APIsのページからユーザー登録を行うだけで取得することができます。登録したE-Mailアドレスに対して、ライセンスキー取得のためのURLが送信されますので、指定されたページにアクセスするだけで終了です。
  • JSPページからGoogle APIを利用する
  •  JSPページからGoogle API にアクセスして、インターネット上のサイトを検索してみる。もちろん、実際のアプリケーションではコード部分はサーブレットクラス、javaBeansなどに記述すること。ここでは、JSPページ内にすべて記述してしまうことにします。
  • ダウンロードした googleapi.zip を展開するとそのフォルダに googleapi.jar が含まれています。 この googleapi.jar さえあれば、Google Web API が実行できます。 他にインストールしなければならない API は特にありません
<%@ page contentType="text/html;charset=Windows-31J"
     import="com.google.soap.search.*" %>
<% request.setCharacterEncoding("Windows-31J"); %>
<html>
<head>
<title>Google検索</title>
</head>
<body>
<form method="POST" action="google.jsp">
検索キーワード:
<input type="text" name="q" size="30" />
<input type="submit" value="検索" />
</form>
<%
 // 検索キーワードが入力された場合のみ、検索処理を実行
if(request.getParameter("q")!=null && !request.getParameter("q").equals("")){
 GoogleSearch objGs=new GoogleSearch();
 objGs.setQueryString(request.getParameter("q")); // 検索キーワード
 objGs.setLanguageRestricts("lang_ja"); // 対象言語
 objGs.setMaxResults(10); // 最大出力件数
 objGs.setStartResult(1); // 出力開始インデックス
 objGs.setSafeSearch(true); // 有害なページをブロックするか
 objGs.setKey("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); // ライセンスキー
 // 検索を実行
 GoogleSearchResult objGsr=objGs.doSearch();
 // 検索の結果、抽出された詳細情報を取得
 GoogleSearchResultElement[] objGsre=objGsr.getResultElements();
%>
 <hr />
 <h2>検索キーワード:<%=objGsr.getSearchQuery()%></h2>
 <h3>検索の結果、<%=objGsr.getEstimatedTotalResultsCount()%>件のサイトが抽出さ れました。検索時間は<%=objGsr.getSearchTime()%>です。</h3>
<dl>
  <%--検索結果詳細からタイトル、URL、サイトサマリを取得--%>
  <% for(int i=0;i<objGsre.length;i++){ %>
   <dt><a href="<%=objGsre[i].getURL()%>">
    <%=objGsre[i].getTitle()%></a></dt>
   <dd><%=objGsre[i].getSnippet()%></dd>
  <% } %>
 </dl>
<%
}
%>
</body>
</html>

 

  • これにはサンプルプログラムが入っています。サンプルは java -cp googleapi.jar com.google.soap.search.GoogleAPIDemo ライセンスキー search 検索語で実行できます。  
  • なお、現在の Google Web API の Java 実装はプロキシに対応していないようです。 正式版では修正されていることを期待しますが、 それまでの間は個人でその修正版を制作された方がいますので、 Patch For Google APIs to handle proxy settings (英語) にあるその修正版を使いましょう。  
  • API の使い方は至ってシンプルです。 全ての API は com.google.soap.search パッケージに属します。 その中の GoogleSearch クラスのオブジェクトに検索語を渡し、 doSearch() メソッドを呼び出すと、検索が実行されて、 その結果を収めたGoogleSearchResult オブジェクトが得られます。
    	GoogleSearch google=new GoogleSearch();
    	google.setKey(自分のライセンスキー);
    	google.setQueryString(検索文字列);
    	GoogleSearchResult result=google.doSearch();
    • 検索失敗時に GoogleSearchFault 例外が投げられますので、 try~catch 節で囲むのをお忘れなく。  
    • 後は、GoogleSearchResult オブジェクトから検索結果が取り出せます。
      	GoogleSearchResultElement[] element=result.getResultElements();
      	for (int i=0;i<=element.length-1;i++)
      	{
      		// element[i] の情報を使う
      	}
    • スペルミス指摘、キャッシュページの取り出しは、 GoogleSearch オブジェクトの doGetCachedPage メソッドや doSpellingSuggestion メソッドを呼び出すだけです。
  • GoogleSearchクラスは、Google検索を行うための諸条件を管理するためのクラスで、このクラスに対して必要なパラメータ値を渡すことで、Googleに対して検索問い合わせを行うことができます(設定可能なパラメータ値は、ダウンロードファイルに添付のAPIリファレンスを参照してください)。setKeyメソッドには、手順(1)で取得したライセンスキーを各自設定する必要があります。
  •   一連のsetterメソッドを設定した後は、 GoogleSearch#doSearchメソッドで検索処理を実行します。doSearchメソッドは、戻り値として検索結果の概要(結果件数や検索時間)を表す GoogleSearchResultクラスを返します。結果の詳細情報を取得したい場合には、 GoogleSearchResult#getResultElements メソッドでGoogleSearchResultElementクラスを取得してください

利用事例:アイデアいろいろ


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-08-17 (金) 13:13:00 (2227d)