IMPORTHTML, IMPORTFEED & IMPORTXML: EXTRAIRE DES DONNĂES WEB DIRECTEMENT DANS GOOGLE SPREADSHEET
IMPORTHTML, IMPORTFEED & IMPORTXML: EXTRAIRE DES DONNĂES WEB DIRECTEMENT DANS GOOGLE SPREADSHEET
Scraper, selon wikipedia câest « extraire 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 ». Extraire des donnĂ©es câest dĂ©jĂ bien, mais dans un tableau google spreadsheet, câest encore mieux.
Pourquoi Scraper des données disponibles sur le web ?
Pour 2 raisons principales:
- un simple copier coller ne conserve pas toujours la mise en forme
- en scrapant les données, on peut actualiser trÚs facilement la récupération de données issues de multiples sources
Quelques exemples dâutilisations:
- Extraire les résultats de recherche de Google ou Twitter pour découvrir les concurrents sur son domaine, ou juste mesurer son positionnement
- Extraire un tableau depuis wikipedia pour en exploiter les données
- Extraire la liste des annonces (titre, prix, etc.) dâun rĂ©sultat de recherche sur leboncoin
- Traduire ses flux RSS en français
- etc.
Google met Ă disposition 3 fonctions trĂšs pratiques pour executer ces taches directement dans google spreadsheet: ImportHtml, ImportFeed & ImportXML.
- ImportHtml: importer facilement des tableaux et des listes
- ImportFeed: importer des flux RSS dans Google spreadsheet
- ImportXml: importer Ă peu prĂšs nâimporte quoi dans google spreadsheet
- TĂ©lĂ©charger les exemples mentionnĂ©s dans lâarticle
ImportHtml: importer facilement des tableaux et des listes
La fonction ImportHtml est la plus facile Ă prendre en main: aucune compĂ©tence technique nâest nĂ©cessaire. Vous pouvez importer 2 types de donnĂ©es depuis nâimporte quelle page internet:
- des tableaux (balises html « table »)
- des listes (balises html « li »)
Utilisation de la fonction ImportHtml de Google Spreadsheet
Syntaxe:
=IMPORTHTML(url, requĂȘte, index)
- url: lâadresse de la page avec le http (ou une rĂ©fĂ©rence Ă une cellule contenant lâurl)
- requĂȘte: table ou list, selon que vous vouliez extraire un tableau ou une liste
- index: numĂ©ro du tableau de la page (1 si il sâagit du 1er tableau, 2 si câest le second, etc.)

Growth = Methode x Experience
Luko, Blablacar, Castalie, Legalstart, Numa,... ont tous fait confiance a deux.io dans leur croissance web. DĂ©couvrez La 1ere Agence de Growth Hacking de
Extraire des données Wikipedia dans Google Spreadsheet avec ImportHtml
Exemple dâutilisation:
=IMPORTHTML("http://fr.wikipedia.org/wiki/Parts_de_marché_des_navigateurs_web","table",1)
[zilla_button url= »#exemples » style= »blue » size= »medium » type= »round » target= »_self »] Essayez par vous mĂȘme ! [/zilla_button]
Pour plus dâinformation, reportez vous Ă la documentation Google Spreadsheet ImportHtml
ImportFeed: importer des flux RSS dans Google spreadsheet
La fonction ImportFeed est Ă peine plus compliquĂ©e. Elle permet dâimporter un flux RSS dans spreadsheet en spĂ©cifiant le type dâinfo quâon veut rĂ©cupĂ©rer. La seule complication ici est quâun flux RSS contient beaucoup de type dâinformation:
- infos relatives au flux lui mĂȘme: titre, description, auteur, url
- infos relatives aux items du flux: titre, résumé, url, date de création
Utilisation de la fonction ImportFeed de Google Spreadsheet
Syntaxe:
=IMPORTFEED(url, requĂȘte*, en_tĂȘtes*, nombre_Ă©lĂ©ments*)
*champs optionnels. Seule lâurl est obligatoire. Si aucun autre paramĂštre nâest indiquĂ©, spreadsheet importera lâensemble du flux, 1 type dâinfo par colonne.
Pour paramétrer un peu plus tout ça & ne récupérer que les infos qui vous intéressent vraiment, voici le détails des champs à passer:
- url: lâadresse du flux RSS, avec le http (ou une rĂ©fĂ©rence Ă une cellule contenant lâurl)
- requĂȘte: vous pouvez rĂ©cupĂ©rer lâensemble du flux (valeur par dĂ©faut) ou juste une partie de celui-ci:
- feed: retourne lâensemble des informations concernant le flux (titre, description, auteur et url
- feed title: retourne le titre du flux
- feed description: retourne la description du flux
- feed author: retourne lâauteur du flux
- feed url: retourne lâurl du flux
- items (valeur par dĂ©faut): retourne lâensemble des champs des billets inclus dans le flux RSS
- items title: retourne le titre des billets inclus dans le flux
- items summary: retourne le résumé (contenu sans images ni liens) des billets inclus dans le flux
- items url: retourne les urls des billets inclus dans le flux
- items created: retourne la date des billets inclus dans le flux
- feed: retourne lâensemble des informations concernant le flux (titre, description, auteur et url
- en tĂȘte: TRUE (valeur par dĂ©faut) pour afficher les en tĂȘte de colonnes ou FALSE si vous ne souhaitez pas les afficher
- nombre_Ă©lĂ©ments: par dĂ©faut, lâensemble du flux sera retournĂ©, amis si vous ne voulez en rĂ©cupĂ©rer quâun certain nombre, indiquez le ici (ex. 10)
Créer un lecteur de flux RSS dans Google spreadhseet
Exemple dâutilisation:
IMPORTHTML("http://fr.wikipedia.org/wiki/Parts_de_marché_des_navigateurs_web","table",1)
[zilla_button url= »#exemples » style= »blue » size= »medium » type= »round » target= »_self »] Essayez par vous mĂȘme ! [/zilla_button]
Pour plus dâinformation, reportez vous Ă la documentation Google Spreadsheet ImportFeed.
Traduire ses flux RSS dans Google spreadhseet
Bonus, parce que lire ses flux dans Google Spreadsheet, ça ne sert pas Ă grand chose seulâŠpar contre, une fois quâon les a dans la feuille de calcul, on peut les traduire facilement: il suffit de crĂ©er un nouvel onglet et dâutiliser la fonction « Translate » inclus dans google spreadsheet
Exemple dâutilisation:
=GoogleTranslate("Il fait chaud et beau";"fr"; "en")
Voila. Simplissime..
ImportXml: importer Ă peu prĂšs nâimporte quoi dans google spreadsheet
La fonction ImportXml est la plus puissante: elle permet dâextraire absolument nâimporte quoi dâune page web. Par contre, elle va demander de plus grande compĂ©tences techniques. Pas besoin de savoir dĂ©velopper, mais il va connaitre la notion de Xpath, et comment dĂ©terminer celui de lâĂ©lĂ©ment Ă extraire de la page web.
Avec la fonction ImportXML, la seule limitation (Ă ma connaissance) est liĂ©e Ă lâexecution de javascripts sur la page: vous ne pourrez extraire des donnĂ©es que si elles sont affichĂ©es dans la page avant lâexecution de javascript. Ce nâest pas un problĂšme pour la plupart des sites internet, mais dans certains cas, mais pourra lâĂȘtre si par exemple vous cherchez Ă extraire une donnĂ©e qui nĂ©cessite un clic sur un bouton pour ĂȘtre affichĂ©e, etc.
Utilisation de la fonction ImportXml de Google Spreadsheet
Syntaxe:
=IMPORTXML(url, xpath)
- url: lâadresse de la page dâoĂč extraire les donnĂ©es (avec le http)
- xpath: le xpath de/des éléments à extraire de la page.
NB: Il est possible dâextraire plusieurs xpath en une seule requĂȘte en les sĂ©parant par des « pipes » (|). Par exemple:
=IMPORTXML("http://www.twitter.com/search?q=growth hacking"; "user xpath | twitter account xpath")
A priori, rien de trĂšs compliquĂ©, mais rĂ©cupĂ©rer le xpath peut parfois ĂȘtre un casse tĂȘteâŠ
Quâest ce quâun Xpath ?
Câest la partie la plus difficile Ă maitriser concernant cette fonction. Si vous prenez le temps de bien comprendre comment les construire par contre, vous aurez un outils extrĂȘmement puissantâŠ
RĂ©cupĂ©rer le xpath dâun Ă©lĂ©ment isolĂ© dâune page est relativement facile, je vous explique juste en dessous. Par contre, pour rĂ©cupĂ©rer une liste dâĂ©lĂ©ments (rĂ©sultats de recherche, etc.), vous devrez forcĂ©ment le modifier « Ă la main » et donc comprendre comment les construire. Pour commencer, lâarticle Xpath sur Wikipedia est une excellente 1Ăšre approche.
En rĂ©sumĂ©, le Xpath est le chemin unique dâun Ă©lĂ©ment dans un document formattĂ© (xml, htmlâŠ). Par exemple, dans le code suivant:
Brice Maurin @deuxio http://deux.io Antoine Richard @doublesensparis http://www.doublesens.fr Pierre le Ny @labelgum http://www.label-gum.com
Pour récupérer dans un tableau les nom, twitter id & site web de la liste, je pourrais utiliser les fonctions suivante:
=IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='name']") =IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='twitter-id']") =IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='website']")
ou en rĂ©cupĂ©rant tout en 1 fois (dans une seule colonne par contreâŠ) grace Ă la fonction suivante:
=IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='name'] | //*[@id='twitter-id'] | //*[@id='website']")
Passons sur le nom de la page. Le paramÚtre xPath passé est ici composé de 3 xPath différents, séparés par des « pipes » ( | ou Alt+Shit+L sur mac) pour indiquer à google spreadsheet que je souhaite récupérer plusieurs champs en 1 seul appel à la fonction importxml.
Je rĂ©cupĂšre donc le nom en recherchant partout dans le document (//) le champs dont lâid est « name » ([@id= »name »]). De la mĂȘme maniĂšre, je lui indique les 2 autres champs quâil doit aller rĂ©cupĂ©rer (//[@id=âtwitter-idâ] et //*[@id=âwebsiteâ]).
NB: Lorsque vous souhaitez extraire des id ou des class en les nommant, pensez Ă les inclure avec des single quotes, pour Ă©viter dâindiquer (avec des doubles) la fin de la fonction Ă google spreadsheet.
RĂ©cupĂ©rer le Xpath dâun Ă©lĂ©ment dâune page web directement dans Chrome
SĂ©lectionnez lâĂ©lĂ©ment Ă extraire dans la page, puis faites un clic droit. Choisissez « ProcĂ©der Ă lâinspection de lâĂ©lĂ©ment ». Les outils de dĂ©veloppement Chrome vont sâafficher, en surlignant dans le code la ligne que vous avez sĂ©lectionnĂ©. Faites un clic droit (dans le code), sur cet Ă©lĂ©ment et choisissez « Copy Xpath »:
Coller ce Xpath dans votre formule, et Google extraira lâĂ©lĂ©ment de la page dans la feuille de calcul.
Quelques exemples de xPath bien pratiques 
Tous les exemples sont contenus dans le Google Spreadsheet contenant les exemples mentionnés dans ce tutoriel.
Récupérer les titres & urls des résultats de recherche de google
Exemple de recherche sur Google: https://www.google.fr/search?q=growth+hacking
Titre de la page: //h3[@class=ârâ]
Url de la page: //h3[@class=ârâ]/a/@href
Exemple dâutilisation de la fonction ImportXml pour extraire des donnĂ©es depuis une recherche Google
Dans la 1Úre colonne, entrez la formule suivante permettant de récupérer le titre des pages de résultat:
=IMPORTXML("https://www.google.fr/search?pws=0&q=growth hacking"; "//h3[@class='r']")
Le dĂ©but de lâurl google est standard, mais jây ai ajoutĂ© le paramĂštre « pws=0 » qui permet de faire une recherche non personnalisĂ©e, câest Ă dire une recherche qui ne prend pas en compte vos recherches prĂ©cĂ©dentes & vos paramĂštres google personnels.
Dans la colonne suivante, entrez la formule suivante permettant de récupérer les urls des pages de résultat:
=IMPORTXML("https://www.google.fr/search?pws=0&q=growth hacking"; "//h3[@class='r']/a/@href")
Vous remarquerez que google ne retourne pas directement les urls des pages de rĂ©sultats, mais une adresse lui permettant de tracker tous les clics sur les liens. Lâurl ressemble à ça:
/url?q={url de la page}&sa={un code qui rend le clic unique, et donc reliable Ă une personne unique}
Pour obtenir lâurl « propre », nous allons lâextraire Ă lâaide de la fonction « RegExExtract ». Entrez donc dans la 3e colonne la formule suivante:
=REGEXEXTRACT({cellule contenant l'url encryptée};"/url?q=(.+)&sa")
Vous obtiendrez une belle url, bien propre et non suivie
[zilla_button url= »#exemples » style= »blue » size= »medium » type= »round » target= »_self »] Essayez par vous mĂȘme ! [/zilla_button]
RĂ©cupĂ©rer les noms dâutilisateurs / url du tweet dâune recherche twitter
Exemple de recherche sur Twitter: https://twitter.com/search?q=growth hacking&mode=news (le &mode=news sert Ă nâafficher que les news, pas les recommandations de users)
Nom dâutilisateur: //[contains(@class, âfullnameâ)]
Compte Twitter: //[contains(@class, âusernameâ)]/b
Url du Tweet: //*[contains(@class, âdetailsâ)]/@href
Exemple dâutilisation de la fonction importxml pour extraire des donnĂ©es depuis une recherche twitter
Dans 3 colonnes, copiez les 3 formules suivantes:
=IMPORTXML("https://twitter.com/search?q=growth hacking&mode=news"; "//*[contains(@class, 'fullname')]") =IMPORTXML("https://twitter.com/search?q=growth hacking&mode=news"; "//*[contains(@class, 'username')]/b") =IMPORTXML("https://twitter.com/search?q=growth hacking&mode=news"; "//*[contains(@class, 'details')]/@href")
Ce qui nous donne un tableau comme celui ci:
[zilla_button url= »#exemples » style= »blue » size= »medium » type= »round » target= »_self »] Essayez par vous mĂȘme ! [/zilla_button]
Exemples mentionnés dans ce tutorial
Testez par vous mĂȘme les fonctions importXml, importHtml, importFeed de google spreadsheet grĂące Ă notre feuille de calcul.
Vous y trouverez les exemples suivants:
- importHtml: Extraire un tableau dâune page wikipedia
- importHtml: Extraire le calendrier des séries de la semaine
- importFeed: Créer un lecteur de flux RSS dans Google spreadhseet
- importFeed + Googletranslate: Traduire ses flux RSS dans Google spreadhseet
- importXml: faire une recherche GOOGLE depuis Google spreadsheet
- importXml: faire une recherche TWITTER depuis Google spreadsheet
Feuille de calcul « IMPORTXML »
Feuille de calcul « IMPORTFEED »Pour les modifier, choisissez « Fichier » > « CrĂ©er une Copie ».NâhĂ©sitez pas Ă posez vos questions en commentaires
Les limitations des fonctions import de google spreadsheet
La limitation la plus importante est que lâon ne peut pas utiliser plus de 50 fonctions import(Xml/Html/Feed) par feuille de calcul. Pour passer outre cette limitation, 2 solutions:
- utiliser des « pipes » (|) entre les xpath pour grouper plusieurs importXml en 1 seul appel
- utiliser plusieurs feuilles de calcul
- utiliser cette méthode mentionnée sur quora
[EDIT: Janvier 2015] Câest fini ! Google vient de lever sa limitation On peut maintenant scraper en illimitĂ© !! Yeah !
Commentaires
Enregistrer un commentaire
đ Hello,
N'hĂ©sitez pas Ă commenter ou vous exprimer si vous avez des trucs Ă dire . . .đ