⛏ Le scraping, une technologie d'extraction de contenu web
Tags: scraping, database, datascience, javascript
Published: 2023-10-17 07:04:13

A l'heure où l'on ne dénombre pas moins de 1,8Md de sites mis en ligne sur le Web, la quantité de données qui y transite quotidiennement reste pour le moins difficile à estimer. Certaines données font parfois l'objet de toutes les convoitises et les méthodes employées pour les importer nécessitent parfois un certain niveau d'expertise.

---

## Le scraping, qu'est ce que c'est ?

Le scraping (ou "grattage" en français) consiste à extraire des données depuis un site web par l'intermédiaire d'un programme informatique automatisé. Son fonctionnement est étroitement similaire à celui des robots quotidiennement déployés par les moteurs de recherches pour permettre notamment l'indexation des sites web.

D'un point de vue technique, plusieurs langages de programmation permettent la conception d'un logiciel de scraping, parmi les plus connus, on retrouve Python, Javascript ainsi que de nombreux frameworks facilitant leur utilisation. Pour Javascript : Selenium, PhantomJS et pour Python : BeautifulSoup et Scrapy.

---

## Le scraping étape par étape

Le processus commence tout d'abord par l'exécution d'une requête HTTP qui réceptionne le contenu distant d'une page web (autrement dit, le document HTML). Le programme de scraping effectue par la suite un travail dit de "Parsing" (découpage), qui consiste à analyser la structure du code réceptionné depuis les balises qui le composent et prélever les informations essentielles. Une fois les données prélevées, elles pourront ensuite être réunies au sein d'un document texte/json ou d'une base de données, puis ré-utilisées au bon vouloir de celui ou celle qui les détiennent. 

```
var webPage = require('webpage')
var page = webPage.create();

page.open('http://phantomjs.org', function (status) {
  var content = page.content;
  console.log('Content: ' + content);
  phantom.exit();
});;
```

> Ci-dessus, un exemple de code permettant l'importation intégrale du contenu de la page web distante au format HTML
> Framework: PhantomJS.

L'un des principaux avantages à automatiser une tâche de scraping est la garantie d'importer une vaste quantité de données "fraîches" en un temps record et, facultativement, de manière quotidienne.

Certains programmes de scraping sont commercialisés et publiquement déployés comme des services à part entière. L'intérêt de recourir à de telles pratiques varie également selon les besoins et les secteurs d'activités. Globalement, les entreprises utilisent ces données pour analyser leur concurrence ou un secteur qu'elles jugent stratégique. 

---

## Pourquoi cette pratique est t-elle malgré tout critiquée ?

Le scraping, de manière modérée ou ponctuelle ne représente pas de problème majeur en soi : il permet d'accélérer et automatiser ce qu'un humain aurait réalisé en beaucoup plus de temps en ayant recours au copier/coller. Cependant, il génère à grande échelle un trafic important et indésirable qui crée un ralentissement des sites victimes de ce processus, les utilisateurs légitimes sont alors pénalisés.

De plus, aucune entreprise ne souhaite retrouver ses données exploitées, et, parfois, abusivement ré-utilisées par une autre entité. On parle alors d'un détournement de traffic.

---

## Comment s'en protéger ?

Une multitude de protections, aux niveaux de difficultés techniques variables, peuvent être mises en place pour échapper à ce phénomène.

### La limitation des requêtes 

Cette précaution consiste à identifier chaque visiteur et limiter le nombre de requêtes par seconde à destination du site, au-delà de cette limite, il est possible de le bloquer momentanément voir définitivement en cas d'abus avéré. Cette protection, bien qu'efficace, doit être configurée en bonne et due forme, au risque de bloquer des utilisateurs légitimes et ainsi compromettre l'accessibilité du site.

### La mise en place d'un captcha.

Il s'agit d'une vérification manuelle ou automatisée permettant de déterminer si le visiteur est bien un humain et non pas un robot. En proposant par exemple une énigme simple à résoudre ou un texte à recopier. Le captcha invisible est aujourd'hui privilégié, il ne force pas l'utilisateur à réaliser d'action et ne cause aucun tort à l'UX du site, mais requiert d'autres méthodes d'identifications (mouvement de souris, scroll sur la page ...) pour déterminer si celui-ci est bel & bien humain.

### La modification régulière et/ou intempestive des codes de balisage HTML.

Un programme de scrapping, pour l'analyse d'une page, se focalise essentiellement sur la structure statique qui compose le document. De nombreuses méthodes relatives au changement de cette structure permet de rendre caduque la plupart des programmes de scraping. Ainsi, lors de leur exécution, plus rien ne leur permet de savoir où chercher les informations pour lesquelles ils ont été configurés.

### La mise en images d'informations textuelles sensibles.

Cette option est à éviter autant que possible, les images étant inaccessibles aux utilisateurs malvoyants.

C'est ainsi que les développeurs s'adonnent à un véritable jeu du chat et de la souris. Et pour cause, les “scrapers“ peuvent malgré tout redoubler d'ingéniosité et trouver des parades aux précautions mentionnées ci-dessus. 

Ils peuvent par exemple :

- Recourir (pour les plus motivés) à des technologies d'analyses optique (OCR) pour remplir les captcha ou prélever des informations cachées dans du contenu mis en image.

- Automatiser l'utilisation de Proxy/VPN pour leur permettre d'exécuter un programme depuis plusieurs IP's différentes.

- Ralentir leurs scripts pour qu'ils restent sous le seuil de limitations des requêtes de votre site et ensuite l'exécuter sur plusieurs machines possédant des IP's différentes.

---

## Que dit la loi ?

Un dernier point reste malgré tout à éclaircir vis à vis de cette pratique, si la mise en service d'un de ces programme ne relève pas d'un manquement direct aux législations en vigueur, qu'en est t-il du seuil de tolérance lié à ces méthodes aux opinions controversées et dans quel cas est t-il outrepassé ?

L'article 323-3 du Code Pénal indique "Le fait d'introduire frauduleusement des données dans un système de traitement automatisé, d'extraire, de détenir, de reproduire, de transmettre, de supprimer ou de modifier frauduleusement les données qu'il contient est puni de cinq ans d'emprisonnement et de 150 000 € d'amende." le terme "système de traitement automatisé" n'a pas de définition exacte et peux couvrir la majorité des sites.

Pour finir, l'Article L342-1 du code de la propriété intellectuelle ne manque surtout pas à rappeler qu'un producteur de base de données à le droit d'interdire:

L'extraction, par transfert permanent ou temporaire de la totalité ou d'une partie qualitativement ou quantitativement substantielle du contenu d'une base de données sur un autre support, par tout moyen et sous toute forme que ce soit.

La réutilisation, par la mise à la disposition du public de la totalité ou d'une partie qualitativement ou quantitativement substantielle du contenu de la base, quelle qu'en soit la forme.

Mais aussi que ces droits peuvent être transmis, cédés ou faire l'objet d'une licence.