Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Récupérez le contenu de n’importe quel site avec Web Harvest

Web Harvest : récupérez facilement le contenu de n'importe quel site

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.

Exemple de récupération de contenu avec Web Harvest

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}&amp;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


Les articles du moment