Olá! Sunday, 08 de September de 2024.



Dicas CódigoFonte.net
Tuesday, 03 de August de 2010

Usando API de Busca do Google com PHP e Curl

 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 tema 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


Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010