Rabat - Coopération internationale
December 1, 2022
I. Introduction au web scraping
Présentation générale et usages courants
Excel.Web scraping, web crawling, screen scraping, quelles différences ?Note
Web scraping et web crawling peuvent aller ensemble :
Exemple
Dans les répertoires d’expressions idiomatiques, il est facile de “dérober” les contenus les uns des autres (Expressio, Expressions Françaises, L’internaute…)
Yahoo Finance offre aussi une API pour l’extraction de donnéesPour des chercheurs, le web scraping peut représenter une importante source de données, et ce dans des domaines très variés.
IPC)Attention
Diffuser ou commercialiser des données scrapées ou un quelconque travail réutilisant ces données n’est pas sans conséquence.
RGPD.CNIL a également publié en 2020 un ensemble de nouvelles directives, limitant l’usage de données personnelles, même si publiques, à usage commercialElle introduit notamment le droit sui generis, protégeant les bases de données ayant nécessité un “investissement substantiel”
Le fabricant d’une base de données [a] le droit d’interdire l’extraction et/ou la réutilisation de la totalité ou d’une partie substantielle, évaluée de façon qualitative ou quantitative, du contenu de celle-ci, lorsque l’obtention, la vérification ou la présentation de ce contenu attestent un investissement substantiel du point de vue qualitatif ou quantitatif
L’extraction et/ou la réutilisation répétées et systématiques de parties non substantielles du contenu de la base de données qui supposeraient des actes contraires à une exploitation normale de cette base, ou qui causeraient un préjudice injustifié aux intérêts légitimes du fabricant de la base, ne sont pas autorisées
bots qui occupent une partie significative du trafic, ralentissant ainsi l’accès au site
DoS)HTML du contenu pour empêcher l’automatisation du scraping par autruiRemarque
Il est préférable de privilégier d’autres modes d’accès aux données lorsque cela est possible.
La politique de l’INSEE est de garder le web scraping comme dernière option. Les premières étapes recommandées sont d’abord de :
Système Statistique EuropéenIn the context of the work on Big Data and Trusted Smart Statistics, the European Statistical System (ESS) increasingly utilises information published on the World Wide Web. To ensure that web scraping activities of European Statistical System (ESS) members, namely Eurostat and the national statistical institutes (NSIs) are carried out transparently, and in line with ethical and legal provision, this document proposes guidelines for an ESS wide web scraping policy. Once adopted, these guidelines not only foster nationally sound practices but also ensure a consistent approach across the ESS.
Système Statistique EuropéenSystème Statistique EuropéenSystème Statistique EuropéenDoS) ou multiplier les mêmes requêtes plusieurs foisHTMLHTMLPour en apprendre plus
Deux ressources-clés :
Clic droit sur la page puis
HTML<head>, <title>, etc. Il s’agit des codes qui vous permettent de structurer le contenu d’une page HTML et qui s’appellent des balises.
<p>, <h1>, <h2>, <h3>, <strong> ou <em>.< > est une balise : il sert à indiquer le début d’une partie. Le symbole </ > indique la fin de cette partie.<p> et </p>).| Balise | Description | 
|---|---|
<table> | 
Tableau | 
<caption> | 
Titre du tableau | 
<tr> | 
Ligne de tableau | 
<th> | 
Cellule d’en-tête | 
<td> | 
Cellule | 
<thead> | 
Section de l’en-tête du tableau | 
<tbody> | 
Section du corps du tableau | 
<tfoot> | 
Section du pied du tableau | 
HTMLHTML| Prénom | Nom | Profession | 
|---|---|---|
| Mike | Stuntman | Cascadeur | 
| Mister | Pink | Gangster | 
HTML pour extraire le contenu désiré (textes, tableaux, images, …).HTML ne suffit pas,
XML, proche du HTML.HTML ou XML, on fait appel à un langage d’expressions appelé XPath.
XPath qui seront utilisées en appel des fonctions.XPath permet ainsi de se déplacer de noeud en noeud dans la structure arborescente d’une page.Présentation des différentes librairies
PythonPlusieurs librairies permettent de faire du scraping en Python. Les principales sont :
Requests et UrllibHTTP pour récupérer le contenu des pages webRequests un peu plus simpliste que UrllibBeautifulSoupHTML ou XML en une structure arborescenteRemarque
La librairie se trouve généralement sous le nom de bs4.
lxmlPermet de formater des documents HTML ou XML en une structure arborescente
Permet de naviguer dans l’arborescence des balises lorsque celles-ci ne sont pas clairement identifiées
Repose notamment sur XPath, permettant d’accéder à des balises enfouies profondément dans l’arborescence
Particulièrement utile pour des pages avec de nombreux éléments emboîtés peu identifiés
SeleniumJavascript
Selenium permet de simuler un navigateur (aussi appelé headless browser) puis d’interagir avec les éléments JavaScript du site “comme un utilisateur”ScrapyRJavaJava est également beaucoup utilisé dans le domaine du web scrapingPour aller plus loin
Un site dédié à l’utilisation de Python pour la data science
Créé et entretenu par Lino Galiana, data scientist à l’INSEE
SSES’identifier via le champ “user-agent”, l’un des headers renseignables lors d’une requête HTTP
Un autre champ parmi les headers possible : from
Renseigner son nom, entité, coordonnées
On peut aussi inclure l’url contenant les informations liées à la collecte ou une explication sur les données prélevées
SSEIl existe plusieurs conventions liées à l’utilisation d’Internet et du scraping qu’il faut tâcher de respecter.
On citera le Word Wide Web Consurtium (W3C), notamment sur les protocoles de transfert hypertexte.
Quelques pratiques admises pour ne pas être bloqué par les sites scrapés :
time.sleep() en Python)
NoSQL et sont traitées ensuite.
HTML peuvent par exemple être stockés dans une base MongoDB.CFAA est inadapté pour ce type de cas.Le Tribunal de Paris :
Décision préliminaire de la CJEU :
Directive 96/9/EC ne s’applique pas dans ce cas, car les bases de données ne qualifient pas :
Contexte : Kiwi.com scrape (entre autres) les données du site de Ryanair pour les agréger sur son comparateur en ligne.
Cas : Ryanair attaque Kiwi.com en justice en République Tchèque pour ne pas avoir respecté les termes contractuels d’utilisation du site.
Verdict : Première défaite de Kiwi.com, puis victoire en appel auprès de la Cour Constitutionnelle Tchèque.
Contexte : Lastminute scrape (entre autres) les données du site de Ryanair pour les agréger sur son comparateur en ligne.
Cas : Ryanair attaque Lastminute en justice en France pour ne pas avoir respecté les termes contractuels d’utilisation du site.
Verdict : La cour d’appel de Paris prend le parti de Ryanair et ordonne la cessation immédiate des activités de scraping de Lastminute, en plus de lourds dommages et intérêts.
Contexte : Entreparticuliers.com scrape quotidiennement les annonces immobilières présentes sur leboncoin.fr afin de les republier sur son propre site
Cas : LeBonCoin attaque en justice Entreparticuliers.com en France pour non respect du droit sui generis de ses bases de données
Verdict : Entreparticuliers.com condamné à deux reprises (par le Tribunal puis la Cour d’appel de Paris)
sui generis.sui generis.sui generis sur ses donnéessui generis protège les bases de données nécessitant des investissements substantiels par les producteurs, indépendamment de l’intention des scrapeurs.
Quid des prérogatives de puissance publique pour recueillir de l’information ?
Le scraping est notamment utilisé pour le calcul des indices des prix :
SNCF, domaine maritime) ;booking.com).D’autres utilisations ponctuelles peuvent également être faites.
Python, un peu de R et de JavaBooking.com)Booking.com)But : collecter davantage de données pour calculer au mieux les indices d’évolution de prix pour l’hôtellerie.
La partie ‘scraping’ du projet est disponible ici.
Pour plus d’informations, contacter (INSEE).
Collecte quotidienne pour capter la volatilité des prix
Requêtes effectuées pour plusieurs couples origine-destination, types de train, antériorités, profils passagers et horaires
Près de 23 000 requêtes par nuit
IPCEurostat investit dans divers projets communs nommés ESSnets.
“An ESSnet project is a network of several
ESSorganisations aimed at providing results that will be beneficial to the wholeESS.”
3 ESSnets dans la continuité les uns des autres :
WIN) d’avril 2020 à mars 2025
WIN fait notamment la promotion du Web Intelligence Hub (WIH), dédié au thème de l’acquisition et l’utilisation de nouvelles données venant du Web.Ces ESSnets couvrent une variété de projets. Ceux-ci sont organisés par work packages, chacun avec ses propres objectifs.
WINOJA)
OJV)OBEC)BREAL: Big data REference Architecture and Layers
Au sein du même track, on pourra aussi citer le projet ‘Process and architecture’, qui a donné naissance au BREAL.
Cela représente désormais le work package 4 du WIN. Tous les rapports disponibles ici.
OJA et le fait qu’il manque beaucoup d’offres non publiées en ligne“The aim of WPC [Work Package C] is to use web scraping, text mining and inference techniques for collecting and processing enterprise information, in order to improve or update existing information, such as Internet presence, kind of activity, address information, ownership structure, etc., in the national business registers.”
Autrement dit, de nombreux sites d’entreprises sont scrapés afin d’en extraire des informations complémentaires aux enquêtes menées par les INS dans chaque pays.
RGPD ajoute un certain nombres de contraintes.OBEC :
OBEC…Afin que chaque INS puisse mettre en application les méthodes mises en place lors du projet, un starting kit est disponible en open source.
Le deliverable associé au starting kit
Le code source sur Github
WIN| Problème rencontré | Réponse à adopter | 
|---|---|
| Liste d’URL non à jour | Lancer un crawling pour vérifier validité des liens | 
| Le robots.txt interdit le scraping de tout contenu | Notifier le site plus en amont de la collecte | 
| Site temporairement indisponible | Essayer de scraper le site à des moments différents | 
| Pas d’horodatage sur le site | Scraper le site régulièrement et comparer les sorties | 
| Informations extraites du site insuffisantes | Le site a pu évoluer : revoir le code du scraping | 
The target audience for the WIH are organisations that produce national statistics and want to modernise the production of national statistics and are looking for:
- Exploring new and emerging data sources
 - Building competences
 - Building and strengthening collaborations
 - Developing new frameworks
 - Adopting new practices
 
Ce n’est donc pas une recommandation. Ce n’est ni une pratique à l’INSEE ni à Eurostat.
WIN ou entre INSLe code source de la formation sur Github accessible ici
Des questions ?
Comment utiliser le SSP Cloud ?