07janv. 2011
Nettoyage des pages Web avec Web-Harvest
00:54 - Par Fabien Poulard - Geek & Technique - 2 commentaires
Dans un projet en cours, j'ai besoin d'un outil de nettoyage des pages Web. Par nettoyage des pages Web, j'entends l'isolement et l'extraction des éléments de la page qui constituent son contenu et le filtrage du reste (menus, publicité, scripts...). J'ai notamment proposé avec mon encadrant un sujet de stage à destination des M1 ALMA de l'Université de Nantes. (Le sujet a été écrit en quelques minutes et je me rends compte de plusieurs fautes, veuillez m'en excuser).
Lors de l'écriture de ce sujet de stage, j'ai découvert Web-Harvest, un outil d'extraction de contenu depuis le Web.
Intérêt d'un nettoyeur de page Web
Le rapport de la tâche d'évaluation CleanEval écrit très bien en quoi le nettoyage des pages Web est importante mais délaissé :
[Le nettoyage des pages Web] est une tâche de bas niveau, non-glamour et pourtant incroyablement cruciale : le mieux elle est réalisée, le meilleur pour les résultats. Toutes les couches du traitement linguistique dépendent du bon nettoyage des données.
En effet, le domaine du traitement automatique des langues naturelles fait de plus en plus appel à des ressources extérieures collectées sur le Web. En ce sens, le Web constitue un corpus accessible à faible coût et d'une taille sans précédent (cf. le récent papier de J.B. Michel qui donne lieu à une jolie démonstration). L'exploitation de cette ressource nécessite toutefois de lever un certain nombre de freins technologiques parmi lesquels le nettoyage des pages Web.
J'ai relevé en particulier un outil qui intègre des moyens de nettoyer des pages Web : Web-Harvest.
Web-Harvest
Web-Harvest est un système complet, distribué sous licence BSD, d'aspiration de pages web et d'extraction de leur contenu. Les collectes sont définis à l'aide de fichiers XML de configuration tels que celui donné en exemple. Ces fichiers de configuration font largement appel à XPath pour récupérer le contenu des pages (liste des liens à télécharger, contenu...) et XQuery pour la construction des fichiers de résultat. À ces deux standards s'ajoute une syntaxe XML spécifique.
J'ai écrit un petit fichier de configuration pour récupérer le contenu des articles du journal Le Monde à partir du flux RSS de sa Une. Attention, ce type d'utilisation viole très certainement les conditions d'utilisation du site. Ce fichier de configuration n'est fourni qu'à titre d'exemple.
Une fois le fichier de configuration construit, il suffit de laisser Web-Harvest faire son travail :
java -Djava.net.preferIPv4Stack=true \ -jar webharvest_all_2.jar \ config=webharvest-lemonde-une.xml
Le résultat est assez impressionnant puisque le système se charge de nettoyer automatiquement les tags html/xml qui resteraient. De plus la gestion de l'aspiration est très rapide et profite du multi-threading. Les performances sur un cluster doivent être excellentes.
Maintenant ce qui serait bien c'est de pouvoir générer automatiquement ces fichiers de configuration... si vous êtes étudiant en M1 ALMA et que vous n'avez toujours pas décidé du contenu de votre stage ;)
2 commentaires
Bonsoir,
J'ai testé web-harvest et je coince au niveau du JS dans les pages, j'utilise le support des expressions régulières(bloc regexp) pour creuser plus loin mais ça commence à être chaotique(pas super propre), une idée? .. je pense que c'est le plus gros souci de web-harvest actuellement car certaines pages peuvent être composés de 70% de JS contre 30% de html(genre les pages de google), c'est dommage ça gâche tout :(
une idée?
Pas vraiment mais je ne suis pas sûr de comprendre quel est le problème. Je dirais naïvement qu'il faut ignorer les blocs <script> mais j'imagine vous avez déjà testé. Certains exemples proposées proposées travaillent sur des pages Google et Yahoo.