2013年11月27日水曜日

【PHP】GoogleCustomSearchAPIを使って検索結果を取得する

<?php
require_once "HTTP/Client.php";

# define
$api_key = 'Please input your api_key';
$custom_search_key = 'Please input your google custom search id';
$input_file = 'keyword_list.csv';
$result_file = 'result.tsv';
$sleep_time = 10;

$csv = array();
$fp= fopen($input_file, "r");
$fp2 = fopen($result_file, "w");

while (($data = fgetcsv($fp, 0, ",")) !== FALSE) {
  $csv[] = $data;
}
fclose($fp);
#var_dump($csv);

$client =& new HTTP_Client();
for ($i = 1; $i < count($csv); $i++) {
  $keyword = $csv[$i][1];
  $urlStr  = "https://www.googleapis.com/customsearch/v1?key=" . $api_key . "&cx=". $custom_search_key . "&q=" . urlencode($keyword) . "&alt=json";
  #echo $urlStr;
  fwrite($fp2, $i . "\t" . $keyword . "\t");

  $client->get($urlStr);
  $response = $client->currentResponse();
  $json = json_decode($response['body'], true);
  if (array_key_exists('items', $json)) {
    $items = $json['items'];
    for ($j = 0; $j < count($items); $j++) {
      #var_dump($items);
      $items_info = $items[$j];
      fwrite($fp2, str_replace(array("\r\n","\r","\n"), '', $items_info['title']) . "\t" . str_replace(array("\r\n","\r","\n"), '', $items_info['snippet']) . "\t");
      #echo 'title : ' . str_replace(array("\r\n","\r","\n"), '', $items_info['title']) . "\r\n";
      #echo 'snippet : ' . str_replace(array("\r\n","\r","\n"), '', $items_info['snippet']) . "\r\n";
    }
  }
  fwrite($fp2, "\r\n");
  sleep($sleep_time);
}
fclose($fp2);
?>

■準備
1. APIキーの取得
GoogleCloudConsole (https://cloud.google.com/console) にアクセスしてAPIキーを取得します
Registered appsから取得します
取得したAPIキーは上記ソースコード中の「$api_key」の部分にセットします

2. カスタム検索エンジンIDの取得
Googleカスタム検索 (https://www.google.co.jp/cse/all) にアクセスして検索エンジンIDを取得します
検索エンジンがない場合は Add から検索エンジンを作成してください
ポイントとしては検索するサイトに「www.google.co.jp/*」を入力し
作成後の編集画面で検索サイトの部分を「追加したサイトを重視して、ウェブ全体を検索する」を選択します
検索エンジンが作成できたら
基本 -> 詳細 -> 検索エンジンID をクリックしてIDを取得します
取得した検索エンジンIDは上記ソースコード中の「$custom_search_key」の部分にセットします

3. HTTP_Clientのインストール
pear install HTTP_Client
※pear自体のインストールに関しては→http://kakakikikeke.blogspot.jp/2013/11/phppearphp.html

0 件のコメント:

コメントを投稿