Como obtener datos de Google Shopping

Publicado el día 1 de junio del 2011, by Lino Uruñuela

Ultimamente vivo obsesionado con diferenciar mi contenido del resto, algunas veces se me ocurren cosas ingeniosas y otras tengo que tirar por el medio como los burros, como en este caso...

Con la nueva salida de Google Shopping Google también ha lanzado la API para el servicio, y esta API de consulta es abierta, hasta cierto volumen de consultas.

Desde la API consola nos creamos un proyecto nuevo y activamos la API de Shopping, veréis que no es la única de la que te puedes aprovechar.


GShopping.gif



Luego vamos a API Access y ahí nos dan una Key que usaremos para solitiar los datos al servicio de Google.


APIKEY


Una vez tengamos la API Key, podemos probar este código en nuestra página web, cambiando donde pone TU-KEY por la que Google te ha dado. Seguro que hay alguna función mejor para leer el XML, pero esta es la que yo he usado.


 <?
if ($_POST["termino"])
     $termino = $_POST["termino"];
else
      $termino = "antena+wifi";

function leer_XML($nombre_archivo,$cuantos_resultados){
    $archivo_XML = html_entity_decode(file_get_contents ($nombre_archivo));

    if (empty($archivo_XML))
    die("No pudimos conectar");

    preg_match_all("|<entry gd:kind=\"shopping#product\">(.*)</entry>|sU", $archivo_XML, $items);

    $listar_nodos = array();

    foreach ($items[1] as $key => $item)
    {
    preg_match("|<title>(.*)</title>|s", $item, $titulo);
    preg_match("|<name>(.*)</name>|s", $item, $nombre);
    preg_match("|<s:name>(.*)</s:name>|s", $item, $snombre);
    preg_match("|<content type=\"text\">(.*)</content>|s", $item, $contenido);
    preg_match("|<s:title>(.*)</s:title>|s", $item, $stitle);
    preg_match("|<s:price currency=\"EUR\">(.*)</s:price>|s", $item, $sprecio);
    preg_match("|<s:brand>(.*)</s:brand>|s", $item, $uri);
    preg_match("|<s:image link=\"(.*)\"/>|s", $item, $imagen);
    preg_match("|<s:description>(.*)</s:description>|s", $item, $descripcion2);

    $listar_nodos[$key]['title'] = $titulo[1];
    $listar_nodos[$key]['name'] = $nombre[1];
    $listar_nodos[$key]['s:name'] = $snombre[1];
    $listar_nodos[$key]['content type=\"text\"'] = $contenido[1];
    $listar_nodos[$key]['s:title'] = $stitle[1];
    $listar_nodos[$key]['s:price currency=\"EUR\"'] = $sprecio[1];
    $listar_nodos[$key]['s:brand'] = $uri[1];
    $listar_nodos[$key]['s:image'] = $imagen[1];
    $listar_nodos[$key]['s:description'] = $descripcion2[1];
    }
    for ($i = 0; $i < $cuantos_resultados; $i++)
    {
    echo "<h1>".utf8_decode($listar_nodos[$i]['title'])."</h1>";
    echo "<h2>".utf8_decode($listar_nodos[$i]['s:name'])."</h2>";
    echo "<img align='left' src='https://www.mecagoenlos.comuot;.$listar_nodos[$i]['s:image']."&w=200'>";
    echo "<p>".utf8_decode(str_replace(chr(10),"<br><br>",$listar_nodos[$i]['s:description']))."<br><hr width=90% hieght=1><br><br>";
    //echo "<h3>".$listar_nodos[$i]['s:title']."</h3>";
    echo "Precio:<b>".$listar_nodos[$i]['s:price currency=\"EUR\"']."</b><br>";
    echo "Marca:".utf8_decode($listar_nodos[$i]['s:brand'])."<br>";
    echo "<b>Tienda".utf8_decode($listar_nodos[$i]['name'])."</b><br><hr><br><br><br>";
    }
    $archivo_XML = "";

}
// DE ESTA MANERA LLAMAMOS A LA FUNCION leer_XML
// leer_XML(URL_ARCHIVO,CANTIDAD);
leer_XML("https://www.googleapis.com/shopping/search/v1/public/products?country=ES&q=".$termino."&key=TU-KEY&alt=atom",15);
?>           


Aquí podemos ver un ejemplo de cómo funciona.

Con esto podemos hacer muchas cosas, no sólo mostrarlo, ya que tal como os lo pongo es indexable por Google pero puede hacer demasiadas solicitudes y ya no sería gratis y además puede hacer tardar mucho la carga de la página si se queda algo colgado.

Lo ideal, y no permitido, es meter estos datos en tu BBDD asociados a cada producto, o url a la que quieras relacionar esta info. Y ya si le cambiamos determinadas palabras automáticamente para que este texto no sea igual al que hay en Google Shopping mejor Wink

Puede que no te valga mostrar el nombre de la tienda, y si eres su competencia ni linkarla por supuesto! pero igual sí puede ser bueno mostrar el nombre de la empresa de ese producto si tú tienes uno simliar y quieres mostrar al usuario que lo ofreces más barato, basta con una simple consulta para mostrar en la ficha de tu producto, ese mismo producto pero en otras tiendas con un precio más caro.

También puedes usarlo para hacer comparaciones de precios de muchos tipos, por zonas (las antenas wifi están más caras en Barcelona que en Valencia), por tiendas (las antenas wifi más baratas las tiene X tienda), seguro que se os ocurren más maneras de usar este conenido.

 

 




Posts anteriores en Como evitar contenido duplicado


Space Needle
Publicado el lunes 10de junio del 2013, By Lino Uruñuela Hoy debatiendo en una lista de correo me ha hecho pensar en cuál es el mejor método para desindexar una url, y claro todo depende de en cómo definamos lo que es desindexar una página y para que lo estamo

Seguir leyendo
  • Lunes 14 de Junio del 2010

Publicado el 14 de junio del 2010 Muchas veces Google ha comentado que lucha contra el contenido duplicado y que cada vez identifica mejor la fuente original, pero ¿que de cierto hay en esto? Yo comienzo a dudar que Google haga un esfuerzo claro por identificar  cuál es la f

Seguir leyendo

Últimos posts

Últimos comentarios


David Girona

Antes de Nada muchas gracias por la aportación. Estoy probando de poner en marcha este procedimiento y me surgen un par de dudas. En
Post: Cómo añadir el valor del meta Robots a Google Analytics via Google Tag Manager

Javier Espinoza

Gracias por la informacion!! Este tipo de blogs me parecen muy importantes, esto lo estudio en la universidad. gracias por la informacion. h
Post: Atacados por los .cn .cz .pl

juan

Hola Lino Uruñuela, una duda ¿aun funciona? porque no lo logro. Mira, en un index.php tengo este codigo: Camuflados
Post: Ofuscando enlaces para mejorar Link Juice

DUQUEredes

Google pasa del canonical bastante :-(
Post: Comprobando comportamiento de Google con meta canonical

Marinette

Gracias por la información!
Post: Nuevo Google Search Console ¿qué información nos ofrecerá?

Adolfo

Parece que a todo el mundo le ha gustado este artículo sexista y lleno de situaciones de agresión sexual y violencia de género, ya tendr
Post: Tipos de marketing

FDM

Hola, Lino: Genial el post, como siempre. Es genial contar con personas tan curiosas y que investigan al detalle el funcionamiento de Goo
Post: La segunda ola de indexación y cómo saber qué renderiza Google

Lino Uruñuela

@Cesar saltarse alguna orden del código es un falta de respeto!, que para algo lo hice :D No se les da muy bien esperar, su tiempo es or
Post: La segunda ola de indexación y cómo saber qué renderiza Google

César Aparicio

Hola Lino, Nos conocemos de películas como: Los de Google son muy frikis o Pasodobles y SEO. Mi cuestión es la siguiente: entiendo
Post: La segunda ola de indexación y cómo saber qué renderiza Google

Nostram

Porque será que no me extraña. No he visto un producto que funcione peor que "OK Google" lamentable.
Post: ¿Grave fallo de privacidad de Google Assistant?

Contacta

Lánzate y pregunta!


He leído y acepto la política de privacidad

Mecagoenlos.com te informa que los datos de carácter personal que nos proporciones rellenando el presente formulario serán tratados por Lino Uruñuela. como responsable de esta web.

La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es para enviar un correo con los datos que introduzcas, sin guardarse en ninguna base de datos.

Legitimación: Al marcar la casilla de aceptación, estás dando tu legítimo consentimiento para que tus datos sean tratados conforme a las finalidades de este formulario descritas en la política de privacidad.

Como usuario e interesado te informamos que los datos que nos facilitas estarán ubicados en los servidores de Linode.com (proveedor de hosting de Mecagoenlos.com) cumpliendo la ley de protección de datos. Ver política de privacidad de Linode.com.

Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@mecagoenlos.com, así como el derecho a presentar una reclamación ante una autoridad de control. Más información aquí.