Google Web APIでちょいと遊んでみた
どうもこんばんは。
tomigungunです。
本日はGoogle Web APIを使って、グーグル検索して遊んでみました。
自分で何かWebアプリ作ろうかな〜と思っていたので、とりあえず手始めに天下のGoogleさん的なね。笑
基本的にGoogleのリファレンスを読んだりして、とりあえず検索のAPIを試してみました。
GETを投げるエンドポイントのBase URLはこちら↓
そして基本となるクエリパラメータは以下のとおりです。
クエリ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アプリケーションを作る第一歩になった、気がします・・・笑
それでは(^_^)/~