Le web scrapping facile avec Ferret

Publié initialement à : https://korben.info/le-web-scrapping-facile-avec-ferret.html

Si vous voulez faire un peu de webscrapping, c'est-à-dire extraire de manière automatisée les informations présentes sur une page web, à des fins de test, pour du machine learning, pour faire de la stat ou tout simplement pomper des data, voici Ferret.

Ferret est un outil sous licence MIT qui s'est donné pour but de rendre tout cela très simple, à l'aide de son propre langage déclaratif. Cela permet de se focaliser uniquement sur la donnée à récupérer en faisant abstraction des détails techniques.

Voici un exemple de code :

LET google = DOCUMENT("https://www.google.com/", true)

INPUT(google, 'input[name="q"]', "korben")
CLICK(google, 'input[name="btnK"]')

WAIT_NAVIGATION(google)

LET result = (
    FOR result IN ELEMENTS(google, '.g')
       RETURN {
           title: ELEMENT(result, 'h3 > a'),
           description: ELEMENT(result, '.st'),
           url: ELEMENT(result, 'cite')
       }
)

RETURN (
    FOR page IN result
    FILTER page.title != NONE
    RETURN page
)

Dans cet exemple, Ferret ouvre la page d'accueil de Google, entre un mot dans le champ de recherche, puis clique sur le bouton "Search".

Le script patiente, le temps que la page se charge, puis lance une itération sur tous les résultats de recherche pour place le titre, l'url et la description dans des variables. Il applique ensuite un filtre pour éliminer les contenus vides avant d'afficher le contenu récupéré.

Le projet en est encore à ses débuts, mais je pense que ce sera intéressant à suivre.