Google SOAP Search API permite a los desarrolladores consultar entre los millones de páginas web indexadas por Google directamente desde tu aplicación usando Web Services. Para ello usa los estándar SOAP y WDSL.
El servicio de Google SOAP Search API es gratuito pero debes registrarte para obtener un key con el cual podras hacer tus consultas hasta un máximo de 1000 consultas por dia.
En nuestro caso usaremos PHP como plataforma de desarrollo e implementaremos un buscador de MP3 basados en reglas de búsqueda. Para poder conectarnos mediante Web Services utilizaremos la librería NuSOAP lo cual nos brindará todas los métodos necesarios para consultar los datos.
Google brinda tres métodos para consultar: Búsquedas, Búsquedas en el cache de Google y Búsqueda Ortográficas. en nuestro caso utilizaremos las búsqueda normal. Para una guia completa de métodos y parámetros puedes visitar Google SOAP Search API Reference.
Para comenzar declaramos nuestras variables e instanciamos al objeto soapclient para conectarnos como cliente al Web Service de Google.
include('nusoap.php'); // Definimos variables $apikey = "tu_numero_key_google"; $start = $_GET['start']; $query = $_GET['query']; // creamos objetos cliente $sclient = new soapclient('http://api.google.com/search/beta2'); $soptions = 'urn:GoogleSearch';
Luego definimos una función para hacer la consulta en donde creamos el array de parámetros que solicita el servicio. Nótese que $q es la consulta que hacemos en donde hemos agregado una cadena con parámetros de búsqueda avanzada que soporta google el cual filtrará las búsquedas para devolvernos listados de archivos MP3.
function doSearch( $query, $type, $key, $start, &$ret ) { global $sclient; global $soptions; $q = 'intitle:index.of "mp3" +"'; $q.= $query; $q.= '" -htm -html -php -asp "Last Modified"'; $params = array( 'key' => $key, 'q' => $q, 'start' => $start, 'maxResults' => 10, 'filter' => false, 'restrict' => '', 'safeSearch' => false, 'lr' => '', 'ie' => '', 'oe' => '' ); $ret = $sclient->call('doGoogleSearch', $params, $soptions); $err = $sclient->getError(); if ($err) { print("
Ocurrio un Error!
"); print("Error: $err
\n"); return false; } return true; }
Lo siguiente es crear la función para llamara al buscador y verificar que se encuentren resultados y devolver los mensajes de error.
function search( $query, $type, $key, $start, &$ret ) { $result = false; $max_retries = 5; $retry_count = 0; while( !$result && $retry_count < $max_retries ) { $result = doSearch($query, $type, $key, $start, $ret); if(!$result) { print( "Attempt $retry_count failed.
\n"); } $retry_count++; } if(!$result) { print("
La conexión fallo.
\n"); } return $result; }
Finalmente necesitamos crear un formulario para ingresar nuestra consulta y luego mostrar los resultados de la búsqueda.
<form method="get" action="index.php"> <input name="query" type="text" value="<?php echo $query; ?>"> <input name="buscar" type="submit" value="Buscar"> </form>
if( $query != "" ) { $query = stripslashes($query); if(doSearch( $query, $type, $apikey, $start, $ret )) { $count = $ret['estimatedTotalResultsCount']; $secs = round($ret['searchTime'],2); $min = $ret['startIndex']; $max = $ret['endIndex']; if ($max) { foreach($ret['resultElements'] as $result) { echo $result['title']."
"; echo $result['snippet']."
"; echo ""; echo $result['URL']; echo ""; } } } }
Con esto ya tenemos listo, ahora se le pueden agregar opciones como escribir el número de resultados, paginación de resultados y desde luego agregarle estilos y ponerle un diseño. Para ello he trabajado y he puesto una versión completa la cual puedes usar como buscador de mp3.
Finalmente te dejo los archivos fuente para que los revises, en estos solo debes ingresar tu número Key de Google para que funcione.
Comentarios Total 9 comentarios
Publicado: 01/11/2006 6:35 pm
[…] En un post anterior hablamos de implementar un buscador usando el Google API SOAP mediante el cual podemos realizar búsquedas en la base de datos de Google directamente sin la necesidad de acceder a su pagina web si no mediante WebServices. […]
Publicado: 23/09/2007 9:53 am
bueno esta bonito el buscador pero no podras crearte un buscador que busque musicas que tenga alojado en mi base de datos para asi pueda buscar musicas alojada en mi host????
Publicado: 16/10/2007 10:33 pm
He probado tu codigo para ahcer el buscador de MP3 pero no me funciona me sale este error.
urrio un Error!
Error: SOAP-ENV:Server: Exception from service object: Invalid authorization key: ABQIAAAAYUSbQz1OVdyzDa2sjbaF3hRQ2maKcF6EFVXnXaK52_yVf8XPkxS1D9OAy1mkTLrOvquyD_o0AxsQ0w
pero yo he probado el key que me da google y no tiene problemas. no se que puede ocurrir si tienes alguna idea te lo agradesco de antemano.
Publicado: 23/10/2007 8:33 pm
porfavor sigo con el miso problema quien me puede ayudarrrrrrrrrr
Ocurrio un Error!
Error: SOAP-ENV:Server: Exception from service object: Invalid authorization key: ABQIAAAAYUSbQz1OVdyzDa2sjbaF3hRTYSz9uTy_rsHioqr-BAAtzTWePRQpU7oWfuKw2QUQQrfBH4eHXOZzxg
Publicado: 24/10/2007 7:40 am
Ojo que Google ha quitado el soporte para Google API SOAP y solo los que registraron con anterioridad para obtener un key puedes utilizarlo pero esto ya dejará de funcionar para todos dentro de poco tiempo.
Publicado: 09/11/2007 4:20 pm
existe una manera con Google AJAX Search API ??
Publicado: 20/11/2007 8:16 am
es un tema interesante que quisiera desarrollar y coincido con la pregunta de sulivan sobre si se puede implementar algo similar con «Google AJAX Search API»?
Publicado: 13/03/2008 4:33 pm
Kise poner el buscador pero me dio este error:
Ocurrio un Error!
Error: HTTP Error: Couldn’t open socket connection to server http://api.google.com/search/beta2 prior to connect(). This is often a problem looking up the host name.
Publicado: 23/08/2008 11:30 am
Error: HTTP Error: Couldn’t open socket connection to server http://api.google.com/search/beta2 prior to connect(). This is often a problem looking up the host name.