tomigungun's blog

IT関連の勉強したこと、気になったニュース、日常の出来事などなど

Google Web APIでちょいと遊んでみた

どうもこんばんは。
tomigungunです。

本日はGoogle Web APIを使って、グーグル検索して遊んでみました。

自分で何かWebアプリ作ろうかな〜と思っていたので、とりあえず手始めに天下のGoogleさん的なね。笑


基本的にGoogleのリファレンスを読んだりして、とりあえず検索のAPIを試してみました。

GETを投げるエンドポイントのBase URLはこちら↓

https://ajax.googleapis.com/ajax/services/search/web

そして基本となるクエリパラメータは以下のとおりです。

クエリkey 説明
q q=blog%20sample 検索文字列
v v=1.0 プロトコルのバージョン番号。現在は1.0のみ?
userip? userip=192.168.0.1 リクエスト元のIP。実際にはよくわかってません汗
rsz? rsz=4 受け取りたい検索結果の数。1~8の間で指定する。
hl? hl=fr アプリ元の言語
start? start=4 最初の検索インデックスの位置。例の場合だと、start要素が0, 4, 8, ・・・となる。
callback? callback=foo レスポンスの際に呼ばれるコールバック関数?
context? context=bar なんかよくわかんないけど、callbackと一緒に指定されるとcontextがノーマルレスポンスになる?

クエリパラメータに関してはこんな感じです。

すみませんが実際に僕が使っていない後半の奴らは、使い方がよくわかっていません。。。

お次はレスポンスのフォーマットについて

JSONで返ってくるみたいです。
基本的な構造は以下のとおりです。

{

"responseData" : {

"results" : [],

"cursor" : {}

},

"responseDetails" : null

"responseStatus" : 200

}

GETリクエストを送るために、jerseyクライアントAPIを使ってHTTPクライアントを作成しました。
ソースコードは以下の通りです。

 public static void main(String[] args) {
        Client client = Client.create();
        String query = "blog sample";
        query = URLEncoder.encode(query);
        WebResource resource = client.resource("https://ajax.googleapis.com/ajax/services/search/web?v=1.0&"
                + "q=" + query + "&rsz=2");
        String response = resource.get(String.class);
        System.out.println(response);
    }

こちらのサンプルコードを実行すると、次のような結果が返ってきます。

{"responseData": {"results":[{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://ranking.ameba.jp/gr_3ple","url":"http://ranking.ameba.jp/gr_3ple","visibleUrl":"ranking.ameba.jp","cacheUrl":"http://www.google.com/search?q\u003dcache:cPgBJDJmxf4J:ranking.ameba.jp","title":"\u003cb\u003eサンプル\u003c/b\u003e・モニター | Ameba(アメーバ)人気\u003cb\u003eブログ\u003c/b\u003eランキング","titleNoFormatting":"サンプル・モニター | Ameba(アメーバ)人気ブログランキング","content":"\u003cb\u003eサンプル\u003c/b\u003e・モニターの\u003cb\u003eブログ\u003c/b\u003eランキングです。商品\u003cb\u003eサンプル\u003c/b\u003eなどのおトクな情報をキャッチ\n!"},{"GsearchResultClass":"GwebSearch","unescapedUrl":"http://blog.goo.ne.jp/portal/template_list","url":"http://blog.goo.ne.jp/portal/template_list","visibleUrl":"blog.goo.ne.jp","cacheUrl":"http://www.google.com/search?q\u003dcache:J043rRLL4BQJ:blog.goo.ne.jp","title":"\u003cb\u003eブログ\u003c/b\u003eテンプレート - goo\u003cb\u003eブログ ブログ\u003c/b\u003eのデザイン一覧です。","titleNoFormatting":"ブログテンプレート - gooブログ ブログのデザイン一覧です。","content":"goo\u003cb\u003eブログ\u003c/b\u003e。\u003cb\u003eブログ\u003c/b\u003eテンプレート・デザイン一覧。 シンプル、クール、ポップ、かわいい\nイラストものから、春、夏、秋、冬、季節に合わせたテンプレートまで、 デザイン\nテンプレートが豊富です。あなたのお気に入りの\u003cb\u003eブログ\u003c/b\u003eデザインがきっと見つかるはず。"}],"cursor":{"resultCount":"296,000","pages":[{"start":"0","label":1},{"start":"2","label":2},{"start":"4","label":3},{"start":"6","label":4},{"start":"8","label":5},{"start":"10","label":6},{"start":"12","label":7},{"start":"14","label":8}],"estimatedResultCount":"296000","currentPageIndex":0,"moreResultsUrl":"http://www.google.com/search?oe\u003dutf8\u0026ie\u003dutf8\u0026source\u003duds\u0026start\u003d0\u0026hl\u003den\u0026q\u003d%E3%83%96%E3%83%AD%E3%82%B0%E3%80%80%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB","searchResultTime":"0.08"}}, "responseDetails": null, "responseStatus": 200}

ちゃんと仕様通りですね。

このResultJSONについては、リファレンスに何も書かれていなかったのですが、key名を見たらなんとなく意味がわかるようになっています。


てな感じで今回はGoogle Web APIで検索をちょろっと試してしてみました。

Googleさんは検索広告で利益をあげているので、APIでのコールはいくつか制限があるみたいですがこんなにも簡単にGETリクエストを送信することができるのですね!

Webアプリケーションを作る第一歩になった、気がします・・・笑

それでは(^_^)/~