Scraping Web et Machine Learning : retour d’expérience

 

Qu’est-ce que c’est le Scraping Web?

Le web scraping (parfois appelé harvesting) est une technique d’extraction du contenu de sites Web, via un script ou un programme, dans le but de le transformer pour permettre son utilisation dans un autre contexte.

Quelles sont les techniques existantes d’extraction des données Web?

Différentes techniques existent pour récupérer l’information à partir de pages web, telles que l’utilisation de langage Xpath, les sélecteurs CSS, la reconnaissance visuelle ou autres méthodes.

Par exemple, le langage Xpath permet de sélectionner ou identifier des nœuds html dans l’arborescence DOM, d’extraire des données en fonction du contenu textuel des éléments ou de calculer des valeurs à partir d’un document XML ou HTML. L’identification des balises html consiste à rechercher les nœuds dans un arborescence HTML avec ses paramètres comme une identité, un classe, un texte etc. afin d’extraire le contenu textuel des balises grâce aux requêtes Xpath.

Afin d’observer un document HTML(arborescence DOM), on a considéré un exemple d’une page Web pour une annonce immobilière de vente du bien.

Par exemple, une balise <button> a comme paramètres aria-label “Close” et son classe “close”, le paramètre data-dismiss étant égal a “modal” et son type “button”. Le texte interne d’une balise est “Fermer”.

<button aria-label= »Close » class= »close » data-dismiss= »modal » type= »button »>     Fermer     </button>

Est-ce qu’il est possible de trouver une approche Machine Learning pour prédire ces balises?

Le but de ce projet expérimental consistait à construire le modèle statistique de la classification supervisée qui serait capable de prédire des balises html en fonction de leur placement dans la structure html.

Au lieu de rechercher les balises par identification(scraping web via Xpath), on a observé la structure de l’arborescence autour de ces balises.

En remarque, une balise contenant le titre d’une annonce était placée fréquemment en tant qu’un descendant d’une balise <header>.

De même manière, on retrouvait la description d’une annonce dans la hiérarchie d’une balise <p>.

La liste descriptive des caractéristiques d’une annonce était présentée sous forme d’une sous arbre html avec la racine <ul>, <li> ou <table>.

En se basant sur une certaine correspondance entre les balises et son placement dans DOM, on a créé des variables indépendantes(Features) permettant de caractériser chaque balise.

Après avoir testé les différentes algorithmes de la classification, le classificateur Random Forest était retenu avec la meilleure prédiction, dans le but d’entraîner des données.   

Finalement, on a sélectionné quelques facteurs qui ont eu plus d’influence sur la prédiction des nœuds que d’autres. Ceci étaient les descendants des balises <header>, <ul>, <table> et  la longueur du contenu textuel d’une balise html.

Pour plus de renseignements sur le projet, veuillez suivre le lien:

https://docs.google.com/document/d/18_0kGXePHTzX54x-IF17LuACv_Q2I9L1ZTj5DQWbpc0/edit