sudo apt-get install vie-sociale
551
  • 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 :)


Gpenverne, à propos de l'auteur

Développeur PHP, et (of course) rédacteur Geek, je vous invite à en savoir plus sur moi sur gregoire-penverne.fr

Visitez son site!
gregoire-penverne.fr

551

Php - Parsez votre boutique amazon avec xpath

Publié le par Gpenverne - Lu 551 fois - 0 commentaires

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

1287

Quelques nouvelles fonctionnalités de PHP5.4

Publié le par Gpenverne - Lu 1287 fois - 0 commentaires

PHP5.4 est sorti :) Au programme, de nouvelles syntaxes, pour du développement toujours plus rapide et agréable. Accès aux méthodes de classes dès l'instanciation [sourcecode language=php] class Human { function __construct($name) { $this->name = $name; } public function hello() { return "Hi" . $this->name; ...

1060

Php - Commenter pour netbeans

Publié le par Gpenverne - Lu 1060 fois - 2 commentaires

De puis peu (poke @makemereach ^^), j'utilise netbeans pour mes développements php (perso et pro). Et cela pour plusieurs raisons: support de svn, transfert/synchro ftp et sftp... Ce n'est sûrement pas le seul IDE de dév php qui existe, et je suppose que cela pourrait faire l'objet d'un long débat. Ce n'est pas l'idée de cet article ^^ (même si je suis très curieux de...

3684

Infographie - Python vs Ruby vs Php

Publié le par Gpenverne - Lu 3684 fois - 0 commentaires

Il fut un temps où j'ai longtemps hésité entre php et ruby. Etant plus à l'aise en php, j'ai fini par choisir, et abandonner le ruby. Néanmoins, tout comme le python, ces langages ont chacun leurs caractéristiques, leurs usages, leurs avantages (et leurs défauts). Cette infographie vous résume tout ça, vous aidant, peut être, à vous décider :) Via...

873

Memcache : boostez votre php

Publié le par Gpenverne - Lu 873 fois - 2 commentaires

Memcache est une solution de cache installable sur des environnements linux, permettant de conserver directement en mémoire vive les informations que vous souhaitez. Le résultat surprend: les performances s'en voient très largement améliorées, notamment s'il est appliqué aux requêtes mysql, comme l'a par exemple fait @maxime (cf, sur son blog...

246

Un kindle, ça coûte 201,70$ à fabriquer

Publié le par Gpenverne - Lu 246 fois - 0 commentaires

C'est une info que révèle technabob: le kindle coûte 201.70$ à fabriquer. En terme de fournitures matérielles, les composants reviennent à 185,60$, le reste du coût de production étant dû au prix de la main-d'oeuvre. Vendu 199$, amazon perd donc 2,70$ sur chaque vente. La stratégie est donc de miser sur l'achat des livres via leur market pour rentabiliser...

679

Wordpress - Récupérer le contenu d'un article à partir de son ID

Publié le par Gpenverne - Lu 679 fois - 0 commentaires

Dans le cadre du développement de l'extension AutoJblog, j'ai eu besoin de pouvoir récupérer le contenu d'un article à partir de son ID. Voici une fonction qui vous permettra de le faire, simplement : [sourcecode language="php"] function get_article_content($article_id, $output=stdClass){ global $wpdb; $post = $wpdb->get_row( $wpdb->prepare( "SELECT...

210

4 erreurs basiques d'optimisation PHP à éviter

Publié le par Gpenverne - Lu 210 fois - 3 commentaires

Le langage PHP présente une souplesse intéressante dans son utilisation, mais, pour des raisons d'optimisation, certaines erreurs doivent être éviter. Pas réellement par soucis de fonctionnement à proprement parler, mais tout simplement par soucis de pérénité de ce que vous développez. Reprendre un machin codé par quelqu'un qui commet l'une de ces gaffes peut...

232

Utiliser APC avec PHP

Publié le par Gpenverne - Lu 232 fois - 0 commentaires

APC est avant tout un système de "cache d'opcodes", qui accélère votre PHP. Mais, tout comme memcache dont je parlais dans un précédent article, APC permet également de stocker des variables en mémoire. Quelques différences avec memcache : - Le cache est forcemment local. Pas de possibilité de spécifier plusieurs serveurs comme on peut le faire avec...

202

Php - Découvrez Apmem

Publié le par Gpenverne - Lu 202 fois - 0 commentaires

Dans le cadre du développement de jcray, j'ai été amené à concevoir un framework correspondant à mes goûts et besoins : flexibilité, réactivité et, surtout, cache. Son nom, Apmem vient de la contraction (ô combien présomptueuse) de Apc et de memcache. Le système respose sur une logique MVC (model-view-controller), à la manière de Zend par exemple. Ayant pu...