Php - Parsez votre boutique amazon avec xpath

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 :)