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 ?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
)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 autruiLa 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éen
In 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éen
Système Statistique Européen
Système Statistique Européen
DoS
) ou multiplier les mêmes requêtes plusieurs foisHTML
HTML
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 |
HTML
HTML
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
Python
Plusieurs librairies permettent de faire du scraping en Python
. Les principales sont :
Requests
et Urllib
HTTP
pour récupérer le contenu des pages webRequests
un peu plus simpliste que Urllib
BeautifulSoup
HTML
ou XML
en une structure arborescentelxml
Permet 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
Selenium
Javascript
Selenium
permet de simuler un navigateur (aussi appelé headless browser) puis d’interagir avec les éléments JavaScript
du site “comme un utilisateur”Scrapy
R
Java
Java
est également beaucoup utilisé dans le domaine du web scrapingSSE
S’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
SSE
Il 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 Java
Booking.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
IPC
Eurostat investit dans divers projets communs nommés ESSnets.
“An ESSnet project is a network of several
ESS
organisations 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.
WIN
OJA
)
OJV
)OBEC
)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 ?