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.

 

 




Lea otros artículos de Como evitar contenido duplicado

Últimos posts

Últimos comentarios


Victorgho

Post: Experimento para comprobar la teoría del primer enlace

medicamento priligy 30 mg
Although serious skin reactions may occur without warning, patients should be alert for the signs and symptoms of skin rash and blisters, fe
Post: Photoshop en Ubuntu

post finasteride syndrome water fasting
LncRNA UCA1 enhances cell proliferation and 5 fluorouracil resistance in colorectal cancer by inhibiting miR 204 5p buy finasteride
Post: Tetris Humano

priligy 30mg price australia
rifabutin will decrease the level or effect of docetaxel by affecting hepatic intestinal enzyme CYP3A4 metabolism buy priligy 30 mg x 10 pil
Post: ¿Tú marido te la pega? Busca en Google

allergie augmentin
bicalutamide aciclovir 800 cena Billy Shore, an advocate at Share Our Strength a group that advocates to end child hunger says letting the p
Post: ¿Pre-panda, Google caffeine o un poquito d ambas?

dapoxetine and cancer
Kennith AyzPtzheSX 5 20 2022 priligy precio P value t test, with differences considered significant at P h Cells were synchronized at the G1
Post: cunetacaracteres

Victorcke

Post: Experimento para comprobar la teoría del primer enlace

Lino
@spamloco a tí r hacerme ver que no soy al único que le importa :p A ver si nos vemos!
Post: ¿Cómo decide Google que URL debe rastrear?

Alejandro
Gracias Lino, siempre investigando un poco más allá.
Post: ¿Cómo decide Google que URL debe rastrear?

Lino
3,2,1... Gracias a ti Pedro!! y sí, parece que los humanos somos expertos en haciendo ruido cuando intentamos que alguien nos escuche... :p
Post: ¿Cómo decide Google que URL debe rastrear?