Crea tu motor de búsqueda con Google y PHP
Algunas veces nos podemos encontrar con la necesidad de incluir un motor de búsquedas en nuestra aplicación web, no me refiero a uno interno, sino a uno que busque dentro de todo Internet.
Normalmente se soluciona mediante un formulario que llama a la página de Google, pero eso puede ser un tanto “feo” y no ser exáctamente lo que buscamos.
Si lo que quieres es un script que llame al API de Google para poder recibir las resultados de una búsqueda a Google y luego mostrarla, verás como se hace en la traducción que hacemos del siguiente artÃculo.
Lo primero que necesitamos para poder llamar a API de Google es crearnos una cuenta en Google, siendo necesario solamente una dirección de correo y si ya estás logueado en Goggle, directamente te llegará la clave del API a tu dirección de GMail.
Para poder realizar las llamadas al API de Google es necesario la librerÃa NuSoap, aunque también se puede realizar mediante PEAR SOAP.
El API de Google consta de tres funciones, con las cuales podremos buscar un término, cargar una página de su caché o que nos dé una sugerencia de búsqueda:
- doGoogleSearch(): busca un término en su base de datos.
- doGetCachedPage(): recupera una página de la caché de Google.
- doSpellingSuggestion(): recupera una sugerencia.
El script para la búsqueda en Google estará dividida en dos partes: si no hay un término para buscar se muestra el formulario y si lo hay se hace la búsqueda y se muestran los resultados.
if (!$_POST['query']) {
// Muestra el formulario
} else {
// Ejecuta la query y muestra los resultados
}
Un ejemplo del script serÃa el siguiente:
<html>
<head></head>
<body>
<?php
if (!$_POST['queryStr']) {
?>
<h2>Resultados de Google</h2>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="queryStr" /> <input type="submit" value="Buscar" />
</form>
<?
} else {
// incluye la clase NuSOAP
include("nusoap.php");
// crea una instancia del cliente de SOPA
$cliente = new soapclient("http://api.google.com/search/beta2");
// Parámetros
$parametros = array(
'Googlekey' => 'gs8f1fJQFHJfBmgmratlW5z3nTQV0ts8', // Google license key
'queryStr' => $_POST['queryStr'], // término de búsqueda
'startFrom' => 0, // empiezo por n
'maxResults' => 10, // número de resultados que muestra
'filter' => true, // elimina páginas similares
'restrict' => '', // restricción por tema
'adultContent' => true, // elimina contenido para adultos
'language' => '', // restricción por idioma
'iencoding' => '', // input encoding
'oencoding' => '' // output encoding
);
/* Llamamos al método del API.
El método call() necesita 4 parámetros:
- método del procedimiento remoto que se llama
- un array con los parámetros que se pasa al método
- namespace SOAP
- acción SOAP
*/
$resultados = $cliente->call("doGoogleSearch", $parametros, "urn:GoogleSearch", "urn:GoogleSearch");
// Muestra los resultados
if ($resultados['faultstring']) {
?>
<h2>Error</h2>
<? echo $resultados['faultstring'];?>
<?
} else {
?>
<h2>Resultados de Google</h2>
<p>Búsqueda de <b><?=$resultados['searchQuery']?></b> devuelve <?=$resultados['estimatedTotalResultsCount']?> resultados.</p>
<table border="0" cellspacing="2" cellpadding="2">
<? $i=1;
if (is_array($resultados['resultElements'])) {
foreach ($resultados['resultElements'] as $r) {
echo "<tr><td>[$i] <a href=" . $r['URL'] . ">" . $r['title'] . "</a>";
echo $r['snippet'] . "(" . $r['cachedSize'] . ")</td></tr>";
$i++;
}
}
$i=1;
?>
</table>
<?
}
}
?>
</body>
</html>
Create Your Own Search Engine with PHP and Google Web Services
VÃa / dzone