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
  • 0000-00-00 00:00:00

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


Javier Galán

Este post es una auténtica genialidad. Muy útil.
Post: Medir cuántos usuarios hacen click para ampliar la imagen en Google Imágenes, aunque no entren en nuestra web

Antonio

Hola Lino, Sabes si añadiendo como robot Googlebot ya incluye tanto al robot de desktop como de mobile? O se tendria que añadir Googlebot
Post: Monotorizar GoogleBot con Google Analytics

unoquepasa

Que pasaria si haces varias paginas y cambias el orden de las palabras en los titulos ¿cual se mostrara primero? las que esten mas cerca de
Post: ¿Cuántas palabras valorará Google en el title?

Alex Rodríguez

Muy buenas Lino! Me pasaba por aquí por casualidad a ver si encontraba algo de info de lo que pasó estos días y bueno... Parece que al
Post: Google comienza el año con dos updates

Lino Uruñuela

@Javi sí, sobre que hay mucho cafre por ahí, tienes razón, pero es como el robots.txt es "peligroso" en manos inadecuadas, igual que el n
Post: Nuevo Google Search Console ¿qué información nos ofrecerá?

Javier Lorente

Gracias Lino! Para "ocultar" errores en plan de andar por casa tiro de robots. Por otro lado, estamos ante una genial actualización que
Post: Nuevo Google Search Console ¿qué información nos ofrecerá?

Lino Uruñuela

Hola Ana! Si esas urls no tenían tráfico orgánico, o este es despreciable yo usaría un 410. Si no hay más enlaces hacia estas urls p
Post: Ofuscando enlaces para mejorar Link Juice

Ana

Muy interesante el artículo, pero tengo una cuestión. ¿Qué se haría con todos esos enlaces que desaparecen si ya han sido indexados por
Post: Ofuscando enlaces para mejorar Link Juice

Lino Uruñuela

@Javier Lorente mañana te contesto poco a poco, de momento la sugerencia de "Pon algo para enterarnos de las respuestas de los comentarios
Post: Cuando restringes por robots.txt puedes aumentar el número de URLs indexadas

Javier Lorente

Siempre sospeché de https://www.seroundtable.com/amp/google-long-term-noindex-follow-24990.html tiene toda la lógica. En alguno de tus exp
Post: Meta Robots Noindex

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í.