Affichage des articles dont le libellé est xml. Afficher tous les articles
Affichage des articles dont le libellé est xml. Afficher tous les articles

2007/10/01

Google Tableur : exemple d'utilisation d'ImportXML

Une des fonctions les plus impressionnantes de Google Tableur est sans nul doute ImportXML (url, query). Cette fonction permet de charger le document XML identifié par url, d'extraire de ce document une liste de données avec la requête Xpath query, et d'utiliser ces données pour remplir les lignes du tableur.

Une fois passés la barrière du bug de localisation, et quelques tâtonnements pour comprendre comment les données récupérées sont rangées dans les cellules, on arrive à faire des choses intéressantes. Bien sûr il faut comprendre un peu Xpath, mais ce n'est pas si compliqué que cela.

Supposons par exemple que vous vouliez récupérer dans votre tableur toutes les URLs retournées par une recherche Google. Il suffit de mettre la formule suivante :

A1 = ImportXML(url_recherche, "//a[@class='l']/@href")
Pour que toutes les URLs des résultats soient extraites et positionnées en colonne A. Si votre recherche retournait 10 résultats, les 10 premières lignes seront remplies, si elle retournait les 50 premiers résultats, les 50 premières lignes seront remplies, etc...

Et chaque fois que vous ouvrirez ce document, la requête sera rejouée et les données à jour seront rechargées !!! Wow !!! Je pense qu'on n'a pas fini de voir des utilisations de cette fonction !

Quelques conseils pour terminer si vous vous laissez tenter par ImportXML :
  • ne vous laissez pas intimider par le nom, ça marche aussi pour du contenu HTML un tant soit peu moderne et bien formé
  • les résultats des requêtes ont l'air d'être cachés par Google, donc ne vous attendez pas à voir les résultats varier de seconde en seconde. Apparemment la fréquence de rafraîchissement est plutôt de l'ordre de l'heure pour l'instant.
  • si votre requête Xpath retourne du texte qui contient des balises XML, ImportXML interpretera chaque balise comme indiquant un changement de colonne. C'est pratique quand vous retournez le contenu d'un TR (chaque TD ira dans une colonne différente), mais c'est pénible si vous récupérez du texte qui a une balise B au milieu, car votre texte se retrouve découpé sur plusieurs colonnes. Du coup il vaut mieux récupérer des valeurs d'attributs (dans l'exemple "//a[@class='l']/@href" on ne récupère pas tout le contenu du noeud A dont la classe est 'l', mais uniquement la valeur de l'attribut href)
Et maintenant à vous de jouer !

2007/09/30

Google Tableur : bug dans ImportXML

Je n'ai pas encore beaucoup joué avec Google Tableur, mais je suis plutôt impressionné. Parmi les fonctions récemment ajoutées, on trouve plusieurs fonctions d'import de données du web, que ce soit sous forme XML ou HTML, page ou fil RSS, etc...

La fonction importXML(url, query) permet d'accéder à une source XML ou HTML identifiée par url, et d'importer la sélection de données déterminées par la requête XPath query. Cela donne des possibilités qu'on n'a pas fini d'explorer.

Malheureusement les débuts sont un peu frustrants car il y a un bug lié à la localisation qui fait que cette fonction retourne systématiquement des erreurs (#ERROR! Erreur d'analyse) dans toutes les lignes importées dès qu'on travaille dans une configuration européenne. Le problème est lié à l'utilisation de la virgule à la fois comme séparateur décimal, et comme séparateur de paramètre. Mais pour l'instant ImportXML ne semble pas accepter le point-virgule comme séparateur de paramètre, donc si vous restez en configuration française, ça ne peut pas marcher. En revanche ça marche si vous configurez les les Paramètres Régionaux de votre tableur (Fichier->Paramètres de feuille de calcul) à Etats-Unis avant de commencer à faire vos ImportXML.