BlogBang

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

capture181020083353nv3 Récupérez le contenu de nimporte quel site avec Web Harvest

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.

capturewebharvestru7cr2 Récupérez le contenu de nimporte quel site 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

Publicité

Je vous recommande aussi la lecture des sujets suivants


Faites un lien vers cette news sur votre site



5 commentaires

  1. Manu Reply to this comment


    En effet ça doit être très intéressant

    Posté le 18 octobre 2008 à 11:10:15

  2. Oizo Reply to this comment


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

    ArF !

    Posté le 18 octobre 2008 à 12:04:41

  3. Tuxargon Reply to this comment


    Genre un GUI pour wget, non ?

    Posté le 18 octobre 2008 à 13:44:26

  4. Aldian Reply to this comment


    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

  5. MyGB Reply to this comment


    Intéressant mais peut-être pas à la portée de tout le monde ?

    Posté le 18 octobre 2008 à 19:21:37