Google Custom Search APIを使って検索結果のURLを取得する【PHP】

経緯

最近, Google検索した際に表示される結果のURLを取得したいということがありました.

いろいろ調べてみた結果, Custom Search APIを用いて試行できたのでメモ.

 

まず, 検索エンジンを用いた検索結果の取得方法として検索結果をスクレイピングするという方法が考えられます. しかし, この手法はご法度らしいのでスルー.

スクレイピングは気をつけなければならない事が多々あるのは知られていることですね.

色々探してみた結果, Custom Search APIを使用すれば(*制限はあるものの)一定の検索結果を取得できるということがわかりました.

今回は, これを利用してPHPにてGoogle検索結果からURLを取得してみます.

 

Custom Search API

API KEYを取得します.

取得方法は, Web上に多く転がっているため割愛します.

マニュアルは(公式マニュアル) 

 

URL取得

とりあえず最初のページ10件分のURLを取得するサンプル.

<?php
// 初期値設定
$search_query = "検索したい語を入れる";
$api_key = "APIキー";
$cx = "検索エンジンID";

// 検索用URL
$tmp_url = "https://www.googleapis.com/customsearch/v1?";

// 検索パラメタ発行
$params_list = array('q'=>$search_query,'key'=>$api_key,'cx'=>$cx,'alt'=>'json','start'=>'1');

// リクエストパラメータ作成
$req_param = http_build_query($params_list);

// リクエスト本体作成
$request = $tmp_url.$req_param;

// jsonデータ取得
$json = file_get_contents($request,true);
$json_d = json_decode($json,true);

// urlを取得
for ($i=0; $i<10; $i++){
$get_url = $json_d["items"][$i]["link"];
echo "$get_url\n";
}
?>

検索用URLとして設定してあげたURLのパラメタにAPIキー, 検索エンジンID,検索語等を設定してあげてレスポンスのJSONからURL("link")を取ってきてあげるといった流れです.

もちろん配列で指定している名前を変えてあげればURLだけではなく, タイトルであったりスニペット等も取得可能です.(詳しくは公式マニュアルで)

ちなみに2ページ目以降も取得したい場合は"start"値を10ずつプラスしてリクエストしてあげればOKです.



以下参考サイト

http://ryutamaki.hatenablog.com/entry/2014/01/18/171640

http://qiita.com/ysks3n/items/92febaf8bbea541b1e36