Growth

ImportHTML, ImportFeed & ImportXML: Extraire des données web directement dans Google Spreadsheet

Temps de lecture : 6 minutes
Développez votre chiffre d'affaires avec deux.io | +600 clients accompagnés.

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:

  1. un simple copier coller ne conserve pas toujours la mise en forme
  2. 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.

  1. ImportHtml: importer facilement des tableaux et des listes
  2. ImportFeed: importer des flux RSS dans Google spreadsheet
  3. ImportXml: importer à peu près n’importe quoi dans google spreadsheet
  4. Télécharger les exemples mentionnés dans l’article
PRENEZ LA VOIE RAPIDE AVEC DEUX.IO

Avec +12 ans d’experiences en marketing et en growth. deux.io a accompagné plus de 500 entreprises dans leur croissances digitales. Nous appliquons des méthodes avancés en growth pour cibler engager, et convertir vos prospects en clients.

Prendre rendez-vous

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:

  1. des tableaux (balises html « table »)
  2. 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.)

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)    
importhtml google spreadsheet exemple tutorial

[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*)
importfeed google spreadsheet exemple tutorial

*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
  • 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")
googletranslate google spreadsheet exemple tutorial

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)
importxml google spreadsheet exemple tutorial
  • 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 »:

extract xpath in google chrome tutorial

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 Googlehttps://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:

fullnametwitter nametwitter url
Walter Adamsonadamson/adamson/status/464728522934996992
Jeff RajeckJRajeck/JRajeck/status/464646011399720960
buzzrbuzzrapp/buzzrapp/status/464467218664001536
Scott Gattisscottgattis/scottgattis/status/463768944369606656

[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

[sociallocker id= »1270″]

Merci ! Accèdez aux 3 feuilles de calcul en cliquant sur les liens ci dessous:Feuille de calcul « IMPORTHTML »
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 😉

[/sociallocker]

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

Si la donnée n'est pas "publiquement" accessible, alors tu ne pourras pas l'importer avec ces méthodes malheureusement :'(
Publié le: 31 août 2022
Flavien
Bonjour, Je cherche à faire un import XML de données sur Google spreadsheet : Importxml(URL; xpath) Je ne parviens pas à scraper la donnée dans mon tableau car cela me dit qu'il y en a pas . Cette donnée est visible uniquement en se connectant avec mon compte mais malgré ça elle reste inimportable dans Google sheet... Pouvez vous m'aider svp? Merci!
Publié le: 7 août 2022
Cet article m'économise des heures de travail pour vérifier et lister des centaines d'urls... merci !
Publié le: 17 juin 2022
Guillaume
Bonjour, Merci pour cet article, il m'a bien aidé, mais je bloque encore sur une extraction avec importxml d'un lien d'une image d'un site Wordpress Je trouve le xpath : //*[@id="innermain"]/div/div/div[2]/div/article/figure/img ça me donne #error avec =importxml("site","//*[@id="innermain"]/div/div/div[2]/div/article/figure/img xpath") j'ai essayé avec fullxpath : /html/body/div[2]/div[2]/div/div/div/div[2]/div/article/figure/img ça me donne #N/A avec =importxml("site","/html/body/div[2]/div[2]/div/div/div/div[2]/div/article/figure/img xpath") Merci pour votre aide
Publié le: 21 mai 2020
Benjamin
Bonjour et merci pour ce tuto bien sympathique ! J'ai un problème pour extraire des informations sur une page. J'ai un projet de programmation pour une app android en utilisant google sheet en base de donnée. Je souhaite avoir une ligne de texte ou est régulièrement mis a jour la version d'un jeu pour l'avoir dans sheet et la retranscrire sur mon application. J'arrive bien a copier le xpath mais dans google sheet cela ne fonctionne pas. Après m'être cassé la tête j'ai observé que lorsque l'on consulte la page en question pour la première fois il y a un popup avant l’accès à la page. Cela bloque t'il ? Peu t'on le contourner ? Le site après popup : https://robertsspaceindustries.com/roadmap/board/1-Star-Citizen le site lors de la première visite : https://robertsspaceindustries.com/roadmap/board/1-Star-Citizen/info Mon xpath : //*[@id="root"]/div/section/div[2]/article/header/div/div[2]/div/p/text()[1] Qui est "Live version : 3.8.2" Merci d'avance pour ton aide !
Publié le: 15 avril 2020
Abdelouahed
Bonjour, Je souhaite récupérer des prix qui changent chaque jour (heure) sur un site. En utilisant importHtml, à chaque fois la donnée est ecrasée par la suivante. As tu une astuce pour incrémenter la cellule, où je récupère une donnée, à chaque le trigger est activé? Comme ça je garde un historique dans mon spreadsheet? Merci d'avance pour ta réponse
Publié le: 14 avril 2020
tu cherches les urls linkedin c'est bien ca ? dans ce cas tu devrais chercher dans la page les liens qui contiennent "linkedin.com/company". tu as chercher quelle etait le xpath pour trouver une chaine de caractere dans un lien ?
Publié le: 3 février 2020
tu as besoin d'aide ? ou bloques-tu ?
Publié le: 3 février 2020
Julien H.
Bonjour, J'ai une liste de X URL de site e-commerce et j'aimerai via google sheet ou autre extraire les url de la page contenant par Linkedin. Je n'arrive pas à le faire massivement car tout le monde n'a malheureusement pas la même manière de structurer leur page. Des idées?
Publié le: 9 janvier 2020
Je voudrais extraire le calendrier annuel de cette page : https://www.europeantour.com/european-tour/schedule/2020/ J'ai besoin d'aide .... merci
Publié le: 24 novembre 2019
Hello Lionel Si tu veux l'ensemble du bloc, utilises le xpath suivant: <code>//div[@class="article__content wording article__content--fiche"]</code> Mais avec un xpath plus précis (en descendant au niveau du ul par exemple) tu peux récupérer chaque élément 1 par 1, ce sera plus propre. Bon scraping !
Publié le: 4 janvier 2019
Ce n'est pas possible avec Google Sheet ? Il faut passer par des outils plus avancés, comme webscraper, ou directement par du code.
Publié le: 4 janvier 2019
Lionel
Bonjour Brice, Merci pour ce super article. Je dois scraper les titres et paragraphes de "Présentation et produits" de 428 Fiches j'ai réussi à obtenir les urls des fiches https://www.salonsimi.com/visiter/liste-des-exposants/fiche-exposant/11910/. Mais n'arrive pas à extraire le contenu en et de ces pages, j'ai essayé la formule suivante = IMPORTXML(Lien;//*[contains(@class,'article__content wording article__content--fiche')] Mais sans succès, merci par avance pour ton aide. ++
Publié le: 15 décembre 2018
Laurent
Merci pour le partage Brice Sais-tu comment faire lorsque le site interrogé nécessite une authentification ? Comment indiquer à la fonction ImportHTML le nom d’utilisateur et le mot de passe ? Merci
Publié le: 12 décembre 2018
En théorie oui, mais il est possible de changer cela => https://support.google.com/docs/answer/58515?hl=fr
Publié le: 28 août 2018
tt
Bonjour, Merci pour ces infos :) Est ce que les données extraites avec le XML path sont mises à jour en automatique à l'ouverture de la feuille de calcul si on extrait un Xpath qui est modifié plusieurs fois par jour? Merci
Publié le: 31 juillet 2018
Je viens de voir cette réponse. Sorry. En gros, Google bloque le scraping depuis GSheet. Pour scraper google, tu vas devoir utiliser un autre outils. Comme tu t'en doutes, des milliers de personnes cherchent à scraper Google, donc tous les outils se font progressivement bloqués. La seule maniere de faire est de coder un bot. Gratuit mais techniquement plus compliqué.
Publié le: 27 février 2018
Pour scraper Google ? le plus simple serait de scraper bing plutot...qui lui, n'est pas encore limité ;)
Publié le: 27 février 2018
Tout est décrit ici ;) https://stackoverflow.com/questions/10177169/finding-a-span-with-specific-content-using-xpath
Publié le: 27 février 2018
Eléonore B
Bon du coup je pense que c'est parce que Google n'autorise plus le scraping sur ses pages... Quel moyen gratuit et simple utiliserais-tu pour faire cela stp ? Merci !
Publié le: 25 février 2018
Eléonore B
Y a t'il un moyen (gratuit et simple) autre que la fonction IMPORTXML de Sheets pour scraper les résultats d'une recherche Google stp ? Car avec ton tuto on peut le faire sur bing mais c'est quand même pas la même chose.. Merci ! :) Eléonore
Publié le: 25 février 2018
Eléonore B
Salut, merci beaucoup pour ton tuto très bien fait ! En appliquant tes consignes je me retrouve quasiment tout le temps avec un message d'erreur #N/A « impossible de récupérer cette URL ». Parfois j'attends et j'obtiens les données mais quand ça reste sur #N/A je suis bloquée. Je veux faire quelque chose de très simple en plus, récupérer le titre des 5 premières résultats d'une requête Google (et si possible le faire ensuite pour 200 requêtes Google). Sais-tu d'où cela vient ? J'ai regardé sur Internet mais il n'y a que des solutions très compliquées et je débute. Merci d'avance :) Eléonore
Publié le: 25 février 2018
re-bonjour, question complémentaire. Pour quelques champs (kilométrage, carburant, boite de vitesse ... tjrs sur leboncoin), l'architecture XML est pas la même et je prends le xpath un peu plus compliqué (sur la span class "value" et en prenant la 5ième valeur). Par contre en fonction des annonces il peut y avoir plus ou moins de "value" et du coup mon index à 5 par défaut ne me renvoie pas tjrs la valeur du kilométrage. Comment rechercher la span class "property" égale à "kilométrage", puis d'aller chercher sa "value" juste en dessous ? (la question est la même pour le carburant et la boite de vitesse. C'est pas des itemprop et du coup de tableau des "value" peut changer de taille (et donc l'index est erroné). Peut-on lui dire trouve moi une h2 avec class "clearfix" puis filtrer ceux avec une span class "property" égale à "Kilométrage" et là récupérer la valeur (ou le content ?) de la span class "value" ... ou bien c'est un peu trop compliqué ? désolé, j'espère ne pas trop polluer ton activité et les commentaires de cette page avec des messages à rallonge.
Publié le: 9 janvier 2018
Un GRAND merci !!! Ca fait tellement longtemps que je cherche à faire ça !! Bon j'avoue, je n'ai pas tout compris de la syntaxe des xpath ... mais j'arriverai à me débrouiller pour cette utilisation (soit dit en passant si tu connais un tuto bien basique sur les xpath ... n'hésite pas). ... donc mon but c'est de me constituer une petite base de données pour 2 véhicules (celui que vend et celui que je souhaite acheter) avec plein d'annonces le bon coin, d'en extraire une correlation entre l'age et le prix ou bien le kilométrage et le prix (par exemple). Bien sûr il faudra filtrer les annonces pertinentes à la main mais si la séance de copier/coller est raccourcie (et sans erreurs) c'est le top ! Encore un grand merci !
Publié le: 9 janvier 2018
Hello Christophe, Je viens de tester pour te répondre. Voici le résultat: https://docs.google.com/spreadsheets/d/16iPmtSNUEwODYm_hj-Tp1U7aB4MSDrGwo9v3GuSRPG4/edit?usp=sharing Comme tu le constateras, je ne suis pas passé par la class value, qui est présente un peu partout, mais par les propriétés "itemprop" qui sont unique et faciles à cibler. Bien plus simple ;) Cela dit, il est tout de même possible de récupérer la 1ère valeure matchant une classe spécifique, en utilisant (XPATH)[1], je t'ai mis un exemple. Enjoy ;)
Publié le: 8 janvier 2018
Bonjour @Brice Merci beaucoup pour cet article. Petite question (après quelques heures de recherche et d'auto-éducation infructueuses). Je cherche à récupérer les infos d'une page leboncoin de vente de véhicule. Donc à savoir rapatrier le prix, la ville, la marque, l'année, le kilométrage, etc. Mettre tout ça dans un google speardsheet pour me faire des stats sur les annonces de telle ou telle voiture. J'arrive à apercevoir le prix via un importxml sur le xpath //span[@class='value']. Mais c'est plusieurs valeurs et une query "select * limit 1" me met un peu tout sur une ligne. Ma question est donc : comment mettre un double critère (span class property = Prix et et value = valeur recherchée. Ou bien comment récupérer uniquement le prix ou la ville ou la marque, etc. Encore merci et bravo pour le support depuis aout 2014 !
Publié le: 8 janvier 2018
Hello, Les numéros de téléphone ne sont affichés que suite à un click, ils ne sont donc pas accessibles par importxml (qui télécharge la page et t'affiche ce que tu veux dedans). Dommage...
Publié le: 28 novembre 2017
atx8791
Bonjour, Merci pour cet excellent article. Auriez vous une idée pour scraper les numéros de tel de ce type de pages https://www.pagesjaunes.fr/recherche/gironde-33/-10-strict-opticiens-mr-catoire-thomas J'ai des milliers d'urls à faire, mais je ne trouve pas la formule malgré de très nombreux essais D'avance un grand merci
Publié le: 21 novembre 2017
NUNO
Bonjour j'essaie en vain de recuperer le nom de cette action (Sumiken Mitsui Road Co Ltd) https://finance.google.com/finance?q=TYO%3A1776&ei=pGL5Wej4BIqOUZTSsNgL j'ai essayé avec =importXML("https://finance.google.com/finance?q=TYO%3A1776&ei=zp34WYj0ENKOUPuWv5gH","//span[@class='appbar']") ou avec =importXML("https://finance.google.com/finance?q=TYO%3A1776&ei=zp34WYj0ENKOUPuWv5gH","//*div[@class='appbar']") et j'ai toujours le meme message Erreur Le contenu importé est vide. merci pour ton aide
Publié le: 1 novembre 2017
Hello, utilise la fonction de cette manière <code>=importxml(A1, "//a[starts-with(@href, 'mailto')]/text()") </code> ou A1 est ta page
Publié le: 6 juillet 2017
Bonjour, Je chercher à extraire les adresses mail contenu dans les pages principales d'une liste de site. Dans le code pour chacune des pages j'ai bien une syntaxe tu type href="mailto:[email protected]" mais impossible d'automatiser la fonction avec importxml. Merci de ton aide précieuse. G.
Publié le: 5 juillet 2017
Syllox
Bonjour Brice, Merci pour ta réponse. Dans ce cas, sais tu m'aiguiller sur ma problématique ? Le lien est ici : https://stackoverflow.com/questions/44524798/google-script-htmlrequest-post Merci d'avance pour ton aide, S.
Publié le: 14 juin 2017
Tu ne peux pas acceder a un page connectée avec importxml. Tu vas devoir continuer avec gscript..
Publié le: 13 juin 2017
Syllox
Bonjour Brice, Merci pour ce super article. J'essai de faire passer une requête post pour me connecter à mon espace client Direct Energie,quand je teste sur POSTMAN sur Chrome tout marche nickel je suis connecté et le retour html est la page de mon espace client. Quand j'essai avec import xml cela reste sur la page de connexion et cela ne prend pas la page final après redirection. Voici la requête : "https://clients.direct-energie.com/connexion-clients-particuliers/?tx_deauthentification[login]=login&tx_deauthentification[password]=mdp&tx_deauthentification[form_valid]=1" A la base je codais cela avec gg script. As-tu des pistes pour m'aider ? Merci d'avance,
Publié le: 13 juin 2017
en effet...toutes les bonnes choses ont une fin :'(
Publié le: 9 juin 2017
Cyberxotika
Ca ne marche plus avec les résultats de Google... ils ont tout bloqué.
Publié le: 7 juin 2017
Cette technique ne permet pas de faire des actions sur la page scrapées, donc pas d'authentification qui nécessite de remplir un formulaire par exemple...
Publié le: 3 avril 2017
Question, peut-on scraper une page qui demande identification ? Et dans ce cas, où rentrer les id et pass ?
Publié le: 27 mars 2017
Hello Jéremy, 2 mécanismes entrent en jeu ici: 1. Google met en cache les requêtes que tu executes (logique) 2. La requete n'est executée qu'une fois, à sa création ou à l'ouverture du fichier (au bémol près mentionné en #1) pour faire ce que tu veux, il faut donc avoir la possibilité d'excuter la requete a intervalle régulier, et non une seule fois. Importxml n'est pas fait pour ca, les google script le sont: https://www.google.com/script/start/
Publié le: 2 mars 2017
jeremy
Bonjour Brice, super tuto ! Par contre une petite question, J'ai bien importé des données externes dans google sheet, seulement lorsque ces dernières sont modifiées sur l'url en question, elles ne se modifient pas automatiquement dans google sheet. Je dois couper et recoller le xpath pour que les modifications de données soient prisent en compte. .y Aurait il un moyen de demander au fichier de le faire automatiquement ? Merci d'avance !
Publié le: 1 mars 2017
Ced Arn
tu peux aussi scinder un tableau en deux row par la fonction split avec comme délimiteur "espace" " "
Publié le: 24 juin 2016
Salut Henri, Les appels depuis Google Spreadsheet sont réalisées depuis les ip de google, donc non loggé sur linkedin. Par contre, il existe pléthore d'outils pour faire ce que tu demandes (payant par contre): profilehopper.com & salestools.io par exemple
Publié le: 22 juin 2016
Bouteiller
Bonjour Brice, j'utilise actuellement un compte Linkedin Pro, j'effectue des recherches correspondant à des postes au sein d'entreprises (par exemple Directeur Commercial ou Responsable Export) et j'aimerais extraire les listes d'URL des profils LinkedIn correspondant aux résultats de mes recherches dans google spreadsheet (sans avoir à toutes les ouvrir et à faire un copier/coller), est ce que tu sais si c'est possible avec la fonction importxml? Bonne journée Henri
Publié le: 22 juin 2016
Le plus simple est de cibler l'attribut du noeud que tu cherches à extraire. Voici le résultat: https://docs.google.com/a/deux.io/spreadsheets/d/1DloQQkQaOqeDk5W0-pOzuTdRj8_KbOrMI3WUEMyHBzg/edit?usp=sharing ++
Publié le: 23 mai 2016
Xpath importer le nombre de vue de youtube vers google sheets Bonjour à tous Je souhaite importer le nombre de vue d'une page youtube vers un document google sheets Et en lisant cet article très intéressant j'ai découvert qu'il existe une fonction google sheets qui permet de faire cela (la fonction en question est : IMPORTXML) J'essaye d'importer sur un document google sheets le nombre de vue de cette page youtube Et pour récupérer le xpath du nombre de vue, je procède ainsi sur google chrome. un clic droit. Je choisis « 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 j'ai sélectionné.en suite je fais un clic droit (dans le code), sur cet élément et je choisie « Copy Xpath »: Après avoir récupéré le xpath je renseigne la fonction google sheets J’obtiens la fonction suivante sur google sheets =IMPORTXML("https://www.youtube.com/user/TopGear/about";"//*[@id="browse-items-primary"]/li/div/div[3]/div/span[2]/b") google sheets m'affiche erreur J'ai cherché et je n'ai pas trouvé l'erreur ??? Merci pour votre aide
Publié le: 23 mai 2016
il est possible que leboncoin bloque les IP de google spreadsheet (et empeche donc de scraper ses pages). Pour vérifier, faites simplement: <code>=importxml("ajouter l'url à tester ici";"//title") </code> Si le titre de la page s'affiche, vous pouvez scraper. Sinon, c'est que les IPs sont bloquées.
Publié le: 3 mai 2016
24option
Bonjour je n y arrive pas du tout je oushaiterais extraire les annonces du bon quoi j ai tout essaye mais je n y arrive pas est ce que quelqun peut m aider?
Publié le: 3 mai 2016
Bonjour Nuno, Comme tu peux le constater, en cliquant sur "returns", la page charge des données dynamiquement depuis le serveur. Google Spreadsheet - en chargeant ton url - ne voit pas ce contenu dynamique mais uniquement le 1er onglet, d'ou ta situation. En analysant la requete depuis la console chrome (dans network), tu peux identifier que l'appel dynamique fait au serveur retourne du json directement exploitable :) --> https://etfdb.com/screener-data/expenses.json/ Tadaaa. Bingo ! De rien.
Publié le: 14 avril 2016
Nuno
bonjour Brice je souhaite extraire pour un usage personnel une liste de l'onglet "Returns" de ce site https://etfdb.com/screener/#asset-class=Equity&leveraged=false&inverse=false&active-or-passive=Passive&tableTab=returns j'ai mis =IMPORTHTML("https://etfdb.com/screener/#asset-class=Equity&leveraged=false&inverse=false&active-or-passive=Passive&tableTab=returns","table",1) J'ai un resultat sous forme de tableau mais celui ci correspond à l'onglet "Overview" Peux tu me dire s'il est possible extraire cette info (onglet Returns) Merci de ton aide. Nuno
Publié le: 14 avril 2016
En effet, il semble que google ait bloqué ses propres IPs (celles de google spreadsheet) ! Comique comme situation...Ca fonctionne tjs sur bing par contre, j'ai modifié ca dans la feuille de calcul. Merci de m'avoir prévenu ;)
Publié le: 14 mars 2016
Alexis
Bonjour Brice L'importXML des résultats de recherche Google ne fonctionne plus ? J'essaie à partir de la feuille mise à dispo et je ne reçois aucun résultats. Merci pour vos tutos
Publié le: 11 mars 2016
Bonjour Steph, Cette technique permet d'extraire les <strong>données visibles</strong> d'une <strong>page publique</strong>. Sur viadeo / linkedin, les emails ne sont évidemment pas visibles au public, ce n'est donc pas possible ;)
Publié le: 17 février 2016
steph
Bonjour Brice, je suis toute nouvelle dans le growth hacking. Je cherche a creer une requete qui pourra automatiquement extraire des emails de profiles sur viadeo et linked suite a une recherche sur google. J'ai telecharge les fichiers attaches en exemples notamment importxml mais j'avoue que je ne sais pas trop quoi faire d'autant plus que j'ai l'impression qu'il y a des erreurs. Pouvez-vous m'aider? Merci bcp par avance.
Publié le: 17 février 2016
Bonjour Céline, Google Spreadsheet ne peut pas simuler de clic, malheureusement. Pour ça, tu devras utiliser des outils tels qu'imacros (https://imacros.net/) ou casper.js (mais il faudra savoir coder ;)). Dans ton cas, pourquoi ne pas extraire la fiche au format csv ? il y a un export possible apparemment. Brice
Publié le: 1 février 2016
Céline
Bonjour Brice, je souhaite extraire une liste d'exposants (industrie-expo.com/exposant-liste-exposants/), la problématique est que la liste est interactive et que pour arriver à extraire les coordonnées, je dois cliquer sur chaque nom d'exposants. J'ai essayé avec les aides mentionnées ci-dessus mais je n'arrive pas à extraire ces coordonnées de chaque exposants (dans toutes les pages). Existe t-il une solution dans ce cas là ? Merci de ton aide. Céline
Publié le: 21 janvier 2016
Salut Adrien. Content que tu aies apprécié. Pour avoir accès à tes contacts, tu dois être loggé. Quand Google Spreadsheet essaie d'accèder à la page, il arrive en fait sur la page de login de linkedin...Pour t'en rendre compte, affiche le titre (//title) de la page que tu essaies d'extraire. Dommage ;) Avec Google Spreadsheet, tu ne pourras pas accèder aux pages ou tu dois t'enregistrer. Pour ça, il te faudra un scraper plus puissant (mais plus compliqué aussi) comme Import.io ou - encore mieux - casper.js.
Publié le: 12 janvier 2016
Hello Brice, Merci pour le tuto : top ! - J'ai essayé la méthode sur une page reprenant mes contacts LinkedIn dont je veux extraire le "Prenom Nom" - L'Xpath que j'ai extrait sur LinkedIn en inspectant l'élément est : "//*[@id="contact-list-container"]/ul/li[1]/div[3]/h3/a" La fonction de marche pas, j'ai beau me creuser la tête et essayer plein de modifications je suis bloqué... Un petit coup de main ne serait pas de trop ;-) Merci ! Adrien
Publié le: 8 janvier 2016
Salut, oui tu peux. Le plus simple serait selon moi de faire: - Trouve le feed RSS du blog, importe l'url (uniquement ca, ca suffira) de chaque article via importrss - Dans la colonne à coté de l'url des articles, utilises importxml pour extraire les données que tu veux. easy, pas vrai ?
Publié le: 23 février 2015
Je voudrais savoir si c'est possible par exemple de scrapper sur plusieurs pages. Je m'explique : Je voudrais importer les données H2 d'un blog (les titres+lien). J'arrive facilement à importer la première page du blog mais pour le reste des pages on fait comment ? Merci pour votre tuto
Publié le: 19 février 2015
En effet, je viens de tester et leboncoin ne semble plus "scrapable" depuis google spreadsheet :'( Le site a du bloquer les ips de google doc...Pour tracker une recherche, vous pouvez toutefois utiliser importrss et l'outils https://starseller.fr/ (qui génère un flux rss depuis une page leboncoin).
Publié le: 16 février 2015
battit64
je voudrais le faire sur le bon coin mais un simple xpath //html se met en N/A y a t'il des limitations dans les constructions des sites
Publié le: 2 février 2015
Je viens de tenter d'importer un calendrier public* avec la fonction importfeed, ca passe tout seul ;) Dans votre cas, votre calendrier n'est il pas privé ? avez vous bien pris l'adresse au format xml ? Brice *https://www.google.com/calendar/feeds/fr.french%23holiday%40group.v.calendar.google.com/public/basic
Publié le: 15 novembre 2014
Bonjour, merci pour le tuto. Je plante pour importer le contenu d'un agenda Google dans un tableau Google. Apparemment le XML d'un agenda Google n'est pas valide et ne s'importe pas. J'ai tenté via l'importHTML, échec également. Avez-vous déjà réussi la manip?
Publié le: 7 novembre 2014
S0u
Merci Brice !
Publié le: 22 octobre 2014
Hello SOu, Avec le xpath, tu peux extraire un "noeud" depuis un document. Ici, tu as bien extraits le noeud contenant le nombre de résultat, mais il inclut également un texte. Tu ne pourras pas aller plus proche. Pour atteindre la solution que tu recherches, tu dois extraire les chiffres de cette chaine de caractere. Pour ca, tu dois utiliser l'expression régulière suivante: ((?:\d+ )+) Tu utilises SEOTools for Excel, je ne connais pas bien ses fonctions, mais sur Google Spreadsheet, tu n'auras qu'à faire: =REGEXEXTRACT(IMPORTXML(G1;"//div[@id='resultStats']");"((?:\d+ )+)") +
Publié le: 21 octobre 2014
S0u
Bonjour Brice, Une petite question, je tente d'extraire uniquement lors du resultats Google mais je bute lorsque j'ai copié la div avec Xpath. =XPathOnUrl("https://www.google.fr/search?q=sport&pws=0";"//div[@id='resultStats']";) En effet j'obtiens ceci " Environ 143 000 000 résultats " or je voudrais avoir seulement le nombre 143 000 000 dans ma cellule Excel. Merci d'avance S0u
Publié le: 21 octobre 2014
Pour ca, il va falloir apprendre le language xpath ;)
Publié le: 1 octobre 2014
srabounette
j'ai quand même une dernière petite question : comment avez vous fait pour trouver le xpath de l'email du contact ? car dans mon exemple, j'ai beau sélectionner l'adresse mail et cliquer sur examiner l’élément et ensuite sur copy xpath, ça ne me donne pas du tout la même expression que vous. je vous demande ça car j'ai souvent ce genre de requête à effectuer donc il faut que j’arrive à le refaire toute seule ^^ merci encore pour votre aide
Publié le: 1 octobre 2014
le parametre "limitation" semble pouvoir etre utilisé. Modifiez le pour le passer à 500 pour avoir 500 résultats ;)
Publié le: 1 octobre 2014
srabounette
Juste un dernier message pour vous dire que j'ai compris et réussi à retrouver mes petits ! je vous remercie énormément car vous m'avez permis de gagner un temps considérable !!!! il me reste à trouver comment contourner le problème des 100 résultats et plus et ça sera parfait, mais même si je ne trouve pas, ça n'est pas grave!! merci encore
Publié le: 1 octobre 2014
srabounette
Désolée de vous déranger encore ... en fait j'ai bien réussi en actualisant la page a avoir des éléments mais où chercher cette fameuse adresse complète ? je vois bien que de nombreux éléments s'affichent mais lequel choisir ?
Publié le: 1 octobre 2014
centreco
FORMIDABLE , par contre, je bloque dès la première étape .. je réalise ma requête sous Google chrome, ensuite je clique droit pour ouvrir l'inspecteur d'éléments puis je regarde l'onglet network, mais il n'y a rien dedans ...
Publié le: 1 octobre 2014
Bonjour Sabrina, C'est tout à fait faisable, mais il faut décomposer le problème en 3 étapes: <strong>1. Trouver l'adresse de la recherche avancée</strong> Pour ca, sous chrome, ouvrez l'inspecteur d'élement puis l'onglet "Network". Choisissez les paramètres qui vous intéresse, puis repérer et copier l'adresse complète de la page listant les résultats. <strong>2. Extraire les résultats</strong> Dan un Google spreadsheet, ajoutez l'url trouvée, puis identifiez les xpath de la compagnie et du lien avec l'email du contact. <strong>3. Extraire l'email du lien</strong> En extrayant tout le lien, on extrait également la mention "mailto:" qui ouvre votre boite mail, et d'autres éléments moins pertinents. Il vous faut ici extraire uniquement le mail. Pour ca, utilisez la fonction google spreadsheet "regexextract" qui va appliquer une expression régulière pour extraire une info d'une cellule. L'expression régulière la plus simple pour trouver un email est "\w+@[\w.-]+|\{(?:\w+, *)+\w+\}@[\w.-]+". Voici le résultat: https://bit.ly/1CG5UZC N'hésitez pas à partager ce post sur Facebook & Twitter ;)
Publié le: 1 octobre 2014
srabounette
Bonjour, Je recherche une solution qui pourrait me simplifier la tâche Je vous explique afin de réaliser un mailing, j'ai besoin d'extraire les mails des exposants au SIAL Pour avoir la liste des exposants, il faut allez sur le site internet du salon, accéder à la liste des exposants en haut à droite de la page d'accueil : https://www.sialparis.fr/Liste-des-exposants-du-SIAL-2014 j'arrive sur cette page et je vais dans la recherche avancée je choisis les secteurs d'activités et les pays qui m'intéressent et j'obtiens une liste de résultats où s'affichent le nom de l'exposant et une icône pour contacter par mail l'entreprise J’ai besoin de récupérer ces résultats au minimum les mails, comment faire mis à part copier/coller Merci d'avance pour vos réponses Bien cordialement,
Publié le: 1 octobre 2014
Je n'en ai pas, mais je vais creusé le scraping d'autres outils, je pense que c'est faisable. Je te tiendrais au courant ;) +
Publié le: 25 août 2014
Salut Brice, C'est bien ce que j'avais remarqué avec la recherche. J'esperais que t'avais un astuce pour aller plus loins. Dommage. Je vais fair avec le API. Merci pour ton aide!
Publié le: 23 août 2014
Salut Julien, Comme tu le constateras en faisant une recherche sur twitter, la 1ère page ne chargent qu'un nombre limité de résultat (environ 10, c'est variable), le reste des résultats étant chargé lorsque tu scrolles. Les fonctions "import" de google spreadsheet se bornent à charger la page, et extraire les données...donc tu ne récupéreras que les 1er résultats. Pour en obtenir plus, 2 solutions: 1. utiliser l'API twitter 2. utiliser un service tiers qui liste plus de résultats (et scraper ce service tiers) Mais si ton but est de stocker l'ensemble des tweets parlant d'un sujet, tu devrais essayer https://mashe.hawksey.info/2013/02/twitter-archive-tagsv5/ qui va stocker tous les tweets (futurs) parlant d'un sujet. Par contre la, c'est quasiment un logiciel, plus une simple fonction google spreadsheet ;)
Publié le: 21 août 2014
Hello, avec une recherche twitter. comment est-ce que je peux faire pour voir plus que le premier 19 resultats? Merci!
Publié le: 21 août 2014
Laissez un commentaire ?
Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nos dernières success stories en growth

Altaroc

Altaroc est une société de gestion française spécialisée dans le private equity, qui offre aux investisseurs privés un accès à des fonds normalement réservés aux institutionnels, dans des secteurs tels que la technologie et la santé. Altaroc a réussi à lever 180 millions d'euros pour son fonds Odyssey, dépassant ainsi de près du double son objectif initial​

B2C
Finance
Scale
Prospection
+250 CGP présents au webinar
+2800 CGP scrapés & enrichis
Agence Prospection Altaroc
1
2
3