Magazine Internet

Php - Parsez votre boutique amazon avec xpath

Publié le 07 avril 2012 par Gpenverne
  • geek - php parsez votre boutique amazon avec xpath amazon xpath php
Peut être avez vous remarqué l'insertion de produits amazon sur geekndev: dans la barre de droite, et tous les 10 articles sur la home. Je ne me suis pas (vous vous doutez) amusé à tous les saisir manuellement en base de données...
En réalité, j'ai utilisé un "astore" proposé par amazon (visible dans l'onglet "boutique geek"). L'astore vous permet d'insérer une boutique dans votre site, en iframe.
Chaque jour, je fais tourner une tache cron qui récupère les produits de l'astore et les insère en bdd.
Voici le code permettant de parser une boutique astore, en utilisant xpath en php:

$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$urls = array(
'http://astore.amazon.fr/...',
'http://astore.amazon.fr/...'
);
foreach ($urls as $urlI)
{
for ($i = 0; $i < 4; $i++)
{
@$doc->loadHTML(file_get_contents('http://astore.amazon.fr/monjule-21?_encoding=UTF8&node=1&page=' . $i));
$xpath = new DOMXPath($doc);
$products = $xpath->query('//table[@class="sidebarproducts"]//tr/td[@class="image"]');
foreach ($products as $product)
{
$picture = $product->getElementsByTagName('img')->item(0)->getAttribute('src');
$name = $product->getElementsByTagName('img')->item(0)->getAttribute('alt');
$url = 'http://astore.amazon.fr' . $product->getElementsByTagName('a')->item(0)->getAttribute('href');
$productArray = array('name' => $name, 'picture' => $picture, 'url' => $url);
/*
// Insertion bdd
*/
print_r($productArray);
}
}
}

Il vous faut juste remplacer les urls avec des liens astore, de type http://astore.amazon.fr/url-de-la-boutique?_encoding=UTF8&node=X , où X est la rubrique de votre astore.
Et vu qu'on est un peu feignant, on peut également parser les produits similaires, ce qui vous permettra d'avoir encore plus de produits :)

$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$urls = array(
'http://astore.amazon.fr/monjule-21?_encoding=UTF8&node=1',
'http://astore.amazon.fr/monjule-21?_encoding=UTF8&node=2',
'http://astore.amazon.fr/monjule-21?_encoding=UTF8&node=3',
'http://astore.amazon.fr/monjule-21?_encoding=UTF8&node=4'
);
foreach ($urls as $urlI)
{
for ($i = 0; $i < 4; $i++)
{
@$doc->loadHTML(file_get_contents('http://astore.amazon.fr/votre-url-astore?_encoding=UTF8&node=1&page=' . $i));
$xpath = new DOMXPath($doc);
$products = $xpath->query('//div[@id="featuredProducts"]//tr[@class="imagerow"]/td');
foreach ($products as $product)
{
$picture = $product->getElementsByTagName('img')->item(0)->getAttribute('src');
$name = $product->getElementsByTagName('img')->item(0)->getAttribute('alt');
$url = 'http://astore.amazon.fr' . $product->getElementsByTagName('a')->item(0)->getAttribute('href');
$productArray = array('name' => $name, 'picture' => $picture, 'url' => $url);
/*
Insertion bdd
*/
print_r($productArray);
}
}
}

Je me suis dit que cela pourrait vous servir :)

Retour à La Une de Logo Paperblog

A propos de l’auteur


Gpenverne 8345 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog

Magazine