Stratégie et veille : Extraire et trier des données en ligne
1. Extraire et trier des données en ligne
Erwan Tanguy
Stratégie et veille
2. Web scraping ?
Le web scraping est une
technique d'extraction du contenu
de sites Web, via un script ou un
programme, dans le but de le
transformer pour permettre son
utilisation dans un autre contexte.
Attention, il peut y avoir une
utilisation légale ou illégale du
web scraping. Nous nous
intéresserons qu’à la première.
Pour quoi faire ?
Transférer des données d’un
site vers un autre site ou vers
un document (type tableau
Excel) ;
Transformer des données pour
y ajouter une valeur avant de
la partager sur des réseaux
sociaux ;
Récupérer des informations
provenant de la concurrence
pour pouvoir les analyser ;
Illégal : récupérer des données
et les publier à son compte ;
…
3. Pour faire de la veille ?
La veille est un élément
stratégique important et souvent
négligé. Elle aide à prendre des
décisions, permet d’évoluer et de
rester à l’écoute.
Ce n’est en aucun cas de
l’espionnage !
La veille numérique travaille à
partir des données disponible
légalement sur internet :
Sur des sites publics ;
Via des requêtes sur les
moteurs de recherche ;
…
La veille, associée à des
techniques de web scraping, va
pouvoir récupérer des données et
les rendre lisibles, accessibles,
pour un public large ou pour des
personnes précises.
Ces données, provenant
généralement de sites web,
pourront être récupérées au sein
d’un document dynamique (un
spreadsheet sur Google Drive par
exemple) ou compilées sur un
flux RSS dans le but d’alimenter
une newsletter…
4. Des outils de web scraping
Pour récupérer des
données :
Google spreadsheet ;
Import.io ;
Kimono ;
Feed43 ;
Yahoo! Pipes…
Pour trier et transformer les
données :
Yahoo! Pipes
Dlvr.it…
Pour pousser les données :
IFTTT ;
Dlvr.it ;
Zapier…
Pour partager les données :
Les suites d’outils Google
(Drive, Group…) ;
Excel ;
Des intranets ou des sites
privés…
Des sites ou des réseaux
sociaux ouverts…
5. Partons d’un exemple
Sur une page de vente
immobilière du site pap.fr, je
voudrais suivre les nouvelles
vente de maisons,
d’appartements ou autres au
fur et à mesure.
URL :
http://www.pap.fr/annonce/
vente-immobiliere-rennes-
35-g43618
Sur cette page, je ne
souhaite récupérer que
les informations de
zones précises liées à
ma recherche :
6. Import.io
Dans la liste des outils gratuits
permettant de réaliser une récupération
de données, vous pouvez utiliser
Import.io qui propose un espace en ligne
et une application.
Cet outil est relativement simple à
utiliser puisqu’il nécessite juste de zoner
les parties de la page avec laquelle nous
souhaitons réaliser un flux.
Le flux obtenu pourra être récupérer en
tableau soit dans Excel soit dans un
spreadsheet sur Drive (avec la possibilité
de le rendre dynamique).
Pour des approches simples, Import.io
peut être redoutable mais dès que le flux
souhaité nécessite des précisions, des
filtres, il faudra passer sur un outil plus
performant et plus complexe.
7. Import.io
Plusieurs méthodes d’extraction des
données sont possibles via
l’application gratuite :
Magic
propose automatiquement de
récupérer les données qui
semblent être les plus évidentes
Extractor & Classic Extractor
vous permet de cibler les
éléments de la page et de les
organiser dans un tableau
Authenticated Extrator
vous permet d’extraire des
données sur un site qui nécessite
une authentification (attention,
cela peut être illégale si vous
transmettez ces données)
8. Import.io
Une fois votre page mise en place, vous
allez pouvoir ouvrir le Data set.
Dans cette partie de l’application, vous
allez pouvoir ajouter les liens des
paginations suivantes pour récupérer la
suite des données.
Vous trouverez aussi des outils pour
intégrer les résultats dans un tableur
(Excel ou spreadsheet) ou directement
les télécharger en csv, html ou excel…
Exemple pour insérer le résultat d’une page
dans un spreadsheet de Google :
=ImportHtml("https://query.import.io/store/connect
or/97a340a3-5ae0-4c2b-9f06-
8931d7f8ebe6/_query?_user=a4b8bb0e-5f58-4315-
805c-
ae9f5c0d0d42&_apikey=YOUR_API_KEY&format=HT
ML&input/webpage/url=http%3A%2F%2Fwww.pap.f
r%2Fannonce%2Fvente-immobiliere-rennes-35-
g43618"; "table"; 1)
9. kimonolabs
Kimonomabs propose une
plateforme en ligne et un
bookmarklet pour déclencher la
récupération des données sur une
page.
Les formats de sorties sont en json,
csv ou rss. Assez simple donc
ensuite de les importer en
dynamique sur un spreadsheet par
exemple.
Comme pour import.io, l’outil étant
simple, il reste limité. Pour notre
exemple, il est impossible de
récupérer les images des annonces.
10. kimonolabs
À partir du bookmarklet, vous
allez pouvoir définir, propriété par
propriété, les différents éléments
de votre tableaux.
Si vous souhaitez récupérer un
flux RSS par la suite, je vous
conseille de suivre les noms
« title » et « description » pour
définir les données principales,
cela simplifiera sa création.
Une fois terminé, il ne vous reste
plus qu’à enregistrer votre API et
la consulter ou l’intégrer à une
plateforme ou un logiciel.
11. Yahoo! Pipes
Yahoo! a mis en place un outil
assez puissant qui permet de
mettre en place des tuyaux
(‘pipes’) qui vont pouvoir
regrouper des informations
provenant de flux RSS, de
pages web, de CSV ou de
json. Ces informations
pourront ensuite être traitées
pour filtrer ou modifier les
données dans le but de les
valoriser.
Plus technique que les deux
précédents outils, il est aussi
plus redoutable d’efficacité.
12. Yahoo! Pipes
Comme le permet aussi dans une
certaine mesure import.io, le
langage XPath nous donne la
possibilité de cibler précisément
des zones.
Dans notre exemple, toutes les
annonces sont dans des éléments
html « li » avec une classe
« annonce », ce qui donne en
XPath :
//li[@class="annonce"]
//li indique que nous cherchons le
ou les nœuds « li » dans la page
[@class="annonce"] pour ne
prendre que ceux qui ont la classe
« annonce ».
13. Yahoo! Pipes
Avant de définir les éléments du flux RSS
final, nous allons correctement
paramétrer la date de publication.
Dans les résultats obtenus avec le Xpath,
nous pouvons dérouler un élément et y
trouver la date en français :
div.0.span.content
Avec le module Regex, nous allons
reformuler la date pour quelle se
présente sous la forme
2015-02-23T07:00:00.00
Nous remplaçons donc la valeur intitial
(ici 23 février 2015) appelé ainsi « (.*)
(.*) (.*) » par « $3-$2-
$1T07:00:00.00 ».
$1, $2 et $3 représentent les valeurs
mémorisées par les 3 (.*) !
14. Yahoo! Pipes
Il faut ensuite remplacer le
nom du mois par son
chiffre :
janvier > 01
février > 02
…
Une fois les dates formatées,
nous allons pouvoir mettre
en place correctement notre
flux.
15. Yahoo! Pipes
Avec le module « Create RSS », nous allons indiquer
pour chaque élément la valeur correspondante.
Titre : div.0.a.span.0.content
Lien : div.0.a.href
Date : div.0.span.content
URL de l’image : div.2.div.0.a.0.img.src
Enfin, nous allons mettre une première valeur dans
la description, le prix du bien immobilier :
div.0.a.span.1.content
En effet, nous avons plusieurs valeurs à saisir mais
peu d’élément pour les contenir. Nous allons donc
travailler la description pour qu’elle puisse contenir
un maximum d’informations.
Enfin, pour finir avec ce module, nous allons ajouter
l’URL de l’image dans l’espace « Author » qui n’est
pas utilisé. Cela nous permettra, dans un
spreadsheet, d’afficher l’image correctement (Google
spreadsheet ne reconnait pas les medias associés).
16. Yahoo! Pipes
Pour finaliser notre flux, il nous reste à
intégrer 4 valeurs dans la description :
1. Le bloc textuel ;
2. Le nombre de pièces ;
3. Le nombre de chambres ;
4. La surface.
Nous allons pour cela utiliser un module
Regex pour ajouter du contenu avant
(« ^ ») ou après (« $ ») le contenu déjà
en place dans description.
Pour commencer nous allons ajouter le
terme prix devant la valeur en place.
Nous plaçons donc devant (replace : ^)
les éléments « Prix : ». Pour que le : ne
soit pas collé à la valeur existante, il est
utile de rajouter un espace.
17. Yahoo! Pipes
Pour le reste, ligne par ligne, nous allons
soit placer des sauts de ligne, soit du
contenu, à la suite des données déjà
présentes avec le symbole $.
Le contenu se trouve là :
${div.2.div.1.p}.
Et les 3 autres valeurs respectivement là
${div.2.div.1.ul.li.0.p}, là
${div.2.div.1.ul.li.1.p} et là
${div.2.div.1.ul.li.2.p}.
Vous nommez et enregistrez votre flux et
c’est prêt.
Vous pouvez ensuite l’intégrer à un
spreadsheet comme pour les précédents,
le connecter à votre boite mail ou à
d’autres services via des applications
comme IFTTT.
18. Yahoo! Pipes
Pour améliorer votre flux, vous pouvez
ajouter les URL des paginations dans
d’autres modules XPath puis les unir
avant d’opérer les modifications.
Avec le module « Filtre », vous pouvez
définir des termes qui doivent ou ne
doivent pas apparaître. Ici, par exemple,
il faut qu’il y ait le terme appartement
dans le titre.
Pour aller plus loin, il est possible de
mettre en place un formulaire qui vous
permettre de choisir le terme présent
dans le titre et de générer un flux propre
à chaque terme.
19. Voir en ligne
La page sur pap.fr : http://goo.gl/62sOtz
La présentation sur slideshare (téléchargeable en PDF) :
http://goo.gl/HxmWim
Le pipe sur Yahoo! Pipes : http://goo.gl/1EZ7TC
Tableau des données sur import.io : http://goo.gl/WsRo7u
Flux RSS du kimonolabs : http://goo.gl/hRdqcX