Récupérez le contenu de n’importe quel site avec Web Harvest
Par Korben | Nb visites : 144

Ce matin, je vais vous présent une application un peu hardcore car elle est assez complexe à utiliser mais vraiment unique et magique !
Ça s’appelle Web-Harvest, c’est open source et ça permet en fait d’extraire des informations à partir de pages web de manière automatique.
En gros, ça se connecte sur le site de votre choix et selon le paramètrage que vous lui avez donné, ça peut vous récuperer tout ce que vous voulez sans vous encombrer du html superflu. En effet, lorsque vous voulez parser du contenu à partir de sites, la donnée est souvent noyée au milieu de tout un tas de code html pas terrible à gérer et à nettoyer de manière automatique.

Web-Harvest fonctionne sur le principe suivant : Il récupére le code html des pages que vous avez demandé puis avec un peu de XSL, de Regexp et de XQuery, ressort uniquement la donnée dont vous avez besoin. Je ne vous cache pas que l’idée de la chose, c’est bien d’automatiser du pompage à grande échelle sur des sites web à des fins diverses comme par exemple du benchmark de prix ou de la récupération de contenu multimédia sans API…etc etc
Pour le fun, voici le genre de petit fichier de config à créer. Celui ci récupère une page de photos sur Flickr qui possèdent le tag « Korben »
<?xml version= »1.0″ encoding= »UTF-8″?>
<!–
Expects following initial variables:
tags – tags for saerch on flickr – separated with blanks
num – number of pages with results
–><config>
<include path= »functions.xml »/><var-def name= »tags » overwrite= »false »>korben</var-def>
<var-def name= »num » overwrite= »false »>1</var-def><loop index= »i » item= »url »>
<list>
<var-def name= »imagelinks »>
<call name= »download-multipage-list »>
<call-param name= »pageUrl »><template>http://www.flickr.com/search/?q=${tags}&m=tags</template></call-param>
<call-param name= »nextXPath »>//a[contains(., 'Next')]/@hrefs</call-param>
<call-param name= »itemXPath »>//td[@class='DetailPic']//img/@src</call-param>
<call-param name= »maxloops »><template>${num}</template></call-param>
</call>
</var-def>
</list>
<body>
<empty>
<file action= »write » path=’flickr/${tags.toString().replaceAll( » « , « »)}/${i}.jpg’ type= »binary »>
<http url=’${url.toString().replaceFirst(« _m.jpg », « .jpg?v=0″)}’/>
</file>
</empty>
</body>
</loop></config>
Si vous n’avez pas trop mal à la tête, je vous invite à vous pencher dessus, c’est passionnant et c’est en java donc compatible avec toutes les plateformes.
Vous trouverez plus d’infos sur le site de WebHarvest
Je vous recommande aussi la lecture des sujets suivants
- Générateurs…partie 12/24
- Débugger avec IE
- Laissez un message au propriétaire d’une adresse IP
- Optimisez le chargement de vos pages en changeant votre code Analytics
- Mettez du divX sur vos pages web !
- CodeOrgan – Ecoutez la musique de votre site
- Mettre en place un Reverse Proxy Nginx sur son serveur
- Personnaliser la page d’erreur de connexion à la DB de Wordpress
- A bas les iframes !
- Initiation au YQL – Open Hack Day







Manu
En effet ça doit être très intéressant
Posté le 18 octobre 2008 à 11:10:15
Oizo
Dommage que je sois une bille là dedans pacque l’idée me plait beaucoup.
Dans mon travail, à titre indicatif pour mes clients j’ai besoin de faire une moyenne des prix neufs pratiqués.
Avec ce logiciel je pourrais automatiser la prise d’informations sur deux ou trois sites
ArF !
Posté le 18 octobre 2008 à 12:04:41
Tuxargon
Genre un GUI pour wget, non ?
Posté le 18 octobre 2008 à 13:44:26
Aldian
Trés intéressant. J’ai précisément besoin d’utiliser ou de programmer quelque chose de ce type dans mon projet actuel et je sais programmer en java. Merci pour l’info
Posté le 18 octobre 2008 à 14:06:50
MyGB
Intéressant mais peut-être pas à la portée de tout le monde ?
Posté le 18 octobre 2008 à 19:21:37