L'extraction web, aussi connue comme le web scraping ou moissonnage du web, est une pratique de plus en plus utilisée, en particulier dans le domaine de la veille concurrentielle et de la recherche marketing.
Elle se résume à extraire des données depuis des pages web accessible publiquement pour en faire des bases de données structurées.
Cette pratique permet, entre autre, d'identifier des mots clés, de calculer des statistiques ou d'enrichir des sources de données existantes. Par contre, ce n'est pas en utilisant des API ni en utilisant des outils d'extraction intégrés aux sites web, mais bien en exploitant le code HTML, le même qui est utilisé pour afficher les pages dans ton navigateur.
Dans cet article, je vais te partager les éléments légaux, techniques et éthiques à considérer dans un projet d'extraction web.
🌘 Est-ce que c'est légal, l'extraction web ?
La première question qu'on va souvent se poser, c'est: est-ce que c'est légal, le web scraping ? Ça demeure une question ambigue, étant donné qu'il y a très peu de jurisprudence. Mais, en se basant sur les éléments de lois actuelles, on peut conclure que, dans certains contexte, la pratique est légale.
Je te donne ici une liste de conditions à respecter pour rester dans les bonnes grâces. Si tu veux t'en assurer, par contre, n'hésite pas à consulter un.e juriste.
-
Les données ne comportent aucune information personnelle, à l'exception de coordonnées d'affaires
-
Tu n'as pas besoin d'un compte sur le site web pour y accéder
-
Les données ne sont pas couvertes par le droit d'auteur. C'est à dire que tu n'extrait pas des textes entiers (la règle officieuse de l'usage légitime est de 20% du contenu d'une page), ni des contenus média, audio ou vidéo. Ce qui est généralement exclus du droit d'auteur, ce sont les points de données, les statistiques et les mots pris individuellement.
-
Le site web n'a pas de conditions à accepter, ni de formulaire de vérification humaine (appelés souvent Captcha)
-
Les données collectées ne sont pas distribuées ou vendues directement au client. Elles sont pour ton usage interne seulement, à des fins de recherche et développement.
🌘 Comment savoir si c'est possible ?
Il faut aussi savoir si c'est possible au niveau technique de le faire sur le site web en question. Les sites web complexes, tels que ceux avec du contenu dynamique, peuvent être très difficiles à utiliser. Les réseaux sociaux sont des exemple de sites qui sont très difficiles à moissonner. Voici quelque éléments qui vont augmenter les chances de succès:
-
Les URL ont un format de requête simple et lisible par l'humain. C'est à dire qu'on peut y trouver des "patterns" qui permettent de créer de nouvelles requêtes.
-
Les pages comportent des formulaires manipulables qui permettent d'extraire les données ou de les filtrer. Pour que le formulaire soit manipulable, il doit faire partie de la page principale et non être une intégration. Il faut aussi que les éléments soient du HTML.
-
Il faut pouvoir faire les requêtes depuis le pays où le site est hébergé avec un VPN, ou depuis le Canada (où ton pays de résidence). Certains sites web vont automatiquement bloquer les adresses IP des VPN ce qui va rendre la tâche plus difficile.
-
Enfin, il faut aussi qu'il n'y ait aucun mécanisme de limitation d'appels, souvent appelés "Rate limiter". Ces systèmes limitent le nombre de visites possibles par intervalle de temps. C'est souvent le cas sur les sites d'actualité qui proposent quelques articles gratuits par mois, par adresses IP, avant de devoir payer.
🌘 Avant de se lancer en grand
Je te laisse quelques conseils avant de te lancer en grand dans la programmation d'un script de web scraping:
-
Vérifie si ça n'a pas déjà été fait ! Tu peux trouver des jeux de données sur des sites web tels que Kaggle, Google Datasets ou Data World.
-
Consulte les réseaux sociaux et les sites collaboratifs. Reddit et GitHub sont de bons endroits pour recenser des jeux de données. Voir ces pages en particulier:
-
Si tu n'as pas trouvé de données, regarde si du code n'a pas déjà été développé pour le même site web que tu veux extraire. Ça pourrait te sauver beaucoup de temps. Encore une fois, des sites comme GitHub ou Zenodo pourront aussi t'aider.
-
Enfin, tu peux vérifier sur un revendeur de données n'a pas déjà ce qu'il te faut !
-
Data & Sons https://www.dataandsons.com/
-
Datarade: https://datarade.ai/
-
AWS Data Exchange: https://aws.amazon.com/fr/data-exchange/
-
ArcGIS Marketplace: https://www.esri.com/en-us/arcgis-marketplace/products?data=Data
-
🌘 Les outils pour l'extraction web
Tu n'as finalement pas trouvé ce que tu cherchais sur le marché, et tu te sens prêt à faire ta propre collecte de données.
Voici différents logiciels que tu pourrais explorer:
-
Avec le langage Python:
-
Avec le langage R
-
En ligne de commande
-
Logiciels payants SaaS
🌘 Faire une extraction web respectueuse
Pour faire une extraction respectueuse, il faut respecter certains critères de base, une fois que tu t'es assuré de la faisabilité au niveau légal et technique.
-
Si le site web offre une API, je te conseille toujours de l'utiliser au lieu de faire du web scraping.
-
Espace les requêtes dans le temps. Un maximum d'une requête par seconde risque moins de te faire bloquer que des requêtes en continu.
-
Conserve seulement ce que tu as besoin. Il est possible que tu arrives à extraire davantage de données que ce que tu as besoin, ou même que tu te retrouves avec des données confidentielles inattendues. Dans ce cas, contacte les responsables du site, explique leur la situation, et supprime les données de ton ordinateur.
🌘 Conclusion
J'espère que ces conseils t'aideront à mieux planifier ton projet d'extraction web. Si tu souhaites un accompagnement, je suis disponible pour te recevoir rapidement en Consultation Express.