Usando a API de busca do Google com PHP

Muitos não sabem, mas o Google disponibiliza a API de busca para possamos criar páginas personalizadas com os resultados da busca. Vou passar para vocês de forma rápida como funciona, a parte do layout e outras melhorias ficam por vossa conta certo... Então vamos começar...
Tentem acessar pelo seu navegador a seguinte url:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&hl=pt-br&cr=countryBR&q=codigofonte.net
Como podem verificar o que apareceu foi um monte de coisa escrita. Isto que apareceu é exatamente o resultado da pesquisa feita pela API em forma de uma string JSON. É a partir dela que extrairemos os resultados da pesquisa. Notem que o parâmetro q=codigofonte.net é onde definimos o termo pesquisado.
Criamos então o arquivo buscaAPI.php:

<?php

header('Content-type: text/html; charset=utf-8');

//URL da API
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=2.0&hl=pt-br&cr=countryBR&q=codigofonte.net";

// Enviando a requisição da URL via Curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://seusite.com");
$body = curl_exec($ch);
curl_close($ch);
//Processando a string Json
$json = json_decode($body);

//Array com os resultados
$array = $json->responseData->results;

//Total de resultados retornados
$n_result = "Aproximadamente ".$json->responseData->cursor->estimatedResultCount;

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Busca do Google Usando a API e PHP</title>
</head>
<body><center>

<?

//Imprimindo os resultados
echo "<div style='position:relative;width:80%;height:600px;text-align:left;'>";
foreach($array as $key){
//Div para cada resultado
echo "<div style='border:01px solid #CCCCCC;margin:02px;padding:02px;width:75%;'>";

$ret_url = $key->url;

echo "<a href=".$ret_url.">";
echo "<span style='color:blue;font-size:18px;font-weight:bold;'>".$key->title."</span>";
echo "</a>";
echo "<br/>";
echo "<span style='color:black;font-size:12px;'>".$key->content."</span>";
echo "<br/>";
echo "<span style='color:green;font-size:14px;font-weight:bold;'>".$key->visibleUrl."</span>";
echo "<br/>";
$cache = $key->cacheUrl;
echo "<a href=".$cache.">";
echo "<span style='color:#CCCCCC;font-size:12px;'>CACHE...</span>";
echo "</a>";
echo "</div>";
}
//Fim da lista de resultados

//Mostra o total de resultados encontrados
echo $n_result;

echo "</div>";


?>
</center></body>
</html>

Salve o arquivo e chame-o pelo navegador, se tudo estiver correto é para aparecer uma lista com 04 resultados como o termo codigofonte.net. Caso não aparecer verifique o código, uma dica... evitem usar o copiar - colar, é melhor imprimir é depois digitar o código linha por linha para entender e evitar erros, uma vírgula errada estraga tudo em PHP.

Como podem notar ele mostra somente  04 resultados, analisem bem a string JSON retornada e descubram como obter mais resultados, vai uma dica:
O resultado é paginado de 04 em 04 resultados, dentro do JSON retornado existem arrays, uma é o array results do qual obtivemos os resultados e outro e o array pages que fica em
$pages = $json->responsaData->cursor->pages;
É uma array assim:
array[0] => 04
array[1] => 08
array[2] => 12
array[3] => 16
array[4] => 20
array[5] => 24
array[6] => 28
array[7] => 32
Cada posição do array pode ser passado com parâmetro na url da seguinte forma:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&hl=pt-br&cr=countryBR&q=codigofonte.net&start=0
Notem o parâmetro start=0, significa que ele exibirá os 04 resultados da posição 0 do array, você pode mudar para 1 para obter mais 04 resultados e assim sucessivamente até obter 32 resultados que é o limite que a API fornece.
Você pode passar o parâmetro de busca via GET através de um formulário e depois passar o parâmetro de paginação via GET diretamente na URL do site.
Espero que entendam e consigam aprimorar.
Abs... Guilherme Lima

Nenhum comentário:

Postar um comentário