Aller au contenu principal

Yahoo Pipes : tutoriel 11 (module XPath Fetch Page)

14/01/2013

Liste des tutoriels Yahoo Pipes

Logo Yahoo Pipes Suite à plusieurs demandes, voici un petit tutoriel pour utiliser le (nouveau) module XPath Fetch Page, qui est venu remplacer le Fetch Page.

Les 2 ont la même fonction : permettre de générer un flux RSS à partir d’une page web standard, dans laquelle se trouve une liste qu’on veut pouvoir lire dans son agrégateur (liste d’actualités, liste de résultats d’opac, etc.)

Mais ils ne fonctionnent pas du tout de la même manière : là où Fetch Page parcourait la page à analyser comme un fichier texte, XPath Fetch Page se comporte différemment : il parcourt l’arbre que constitue la page web.

Je ne vais pas faire une présentation complète de ce qu’est XPath : il y a plein de tutoriels en ligne pour ça. Mais j’ai néanmoins préféré y consacrer une petite vidéo préalable.

Pour la comprendre, il vaut mieux être un minimum familier avec le langage HTML :

  • ce que sont les balises et les attributs
  • à quoi servent généralement les balises body, div, ul, li, a
  • à quoi servent généralement les attributs class et id

A partir de là, ça devrait bien se passer.

Vidéo XPath

Tutoriel de présentation de XPath

?XPath?

Yahoo Pipes : module XPath Fetch Page

Tutoriel XPath Fetch Page

?XPath Fetch Page?

45 commentaires
  1. 14/01/2013 11:17

    Lire également sur le même sujet, le tutoriel réalisé par mes soins avec pour exemple le Journal officiel : http://donneesjuridiques.wordpress.com/2012/12/04/creer-un-fil-rss-avec-yahoo-pipes/

  2. 15/01/2013 13:13

    Grand merci c’est très clair, j’essaie de créer un fil rss à partir d’un Storify, sauf que par défaut, les storify apparaissent tronqués, il faut cliquer sur « read more » pour tout lire. Or il ne va pas chercher les liens avec la bonne class au delà de « read more ». Une idée de solution ?

  3. 15/01/2013 14:03

    @Silvère : en fait je ne suis pas sûr de comprendre ta situation : tu veux faire un flux à partir d’une page publiée sur Storify (comme http://storify.com/Copyrightmad/copyright-madness-du-7-au-13-janvier) ou à partir d’un compte (comme http://storify.com/Copyrightmad/) ?

  4. Tra VU permalink
    28/01/2013 04:29

    Bonjour,

    Grand Merci à vous de cet article très intéressant et utile.
    Merci de vos guides concernant Yahoo Pipes, c’est super pour moi.

    Merci aussi à Guillaume Adreani qui m’a donné des consignes claires pour créer des flux RSS malgré que je ne connais pas Java, XPATH,…

    Mais j’ai des difficultés avec les pages dont la structures sous forme de tableaux,.. Par exemple:
    – Je peux créer un RSS de Maxisciences, par exemple : http://pipes.yahoo.com/pipes/pipe.info?_id=4bea375e99568c94114bcf8d78ed8e0d
    – Mais pour quelques site comme Chorum CIDES (http://cides.chorum.fr/cides/f_actus/L-essentiel-de-l-actualite-de-l-ess.html), je ne réussis à créer son RSS avec XPATH : http://pipes.yahoo.com/pipes/pipe.info?_id=803e5a9a73ca5295a7caa99747de27e9

    Pourriez-vous m’aidez à corriger ce flux RSS Chorum CIDES ?
    Mercie par d’avance et Bonne journée,

  5. 28/01/2013 09:20

    @Tra Vu : comme l’URL de la page à parser (http://cides.chorum.fr/cides/f_actus/L-essentiel-de-l-actualite-de-l-ess.html) renvoie pour le moment un message d’erreur, je n’obtiens moi non plus rien de satisfaisant 😦
    Cela dit, le XPath que vous avez mis manque de « classe » : /html/body/div/div/div/table/tbody/tr/td/a
    Dans les 3 div ci-dessus, il n’y en a aucune qu’on pourrait caractériser par une class, pour avoir un truc du genre :
    //div[@class=’nom_de_la_classe’]//td/a

    Voire : //td[@class=’liste_que_je_veux’]/a

  6. 28/01/2013 17:56

    @Tra Vu
    OK, la page est accessible.
    Pour ma part, je proposera en chemin XPATH : //table[@class=’liste’]//tr

  7. Tra VU permalink
    30/01/2013 15:26

    @Etienne Cavalié
    Merci Etienne Cavalié. J’ai testé avec votre chemin XPATH, mais ça ne marche pas.
    http://pipes.yahoo.com/pipes/pipe.edit?_id=803e5a9a73ca5295a7caa99747de27e9
    Est-ce que « class=’lienTableau' ».
    Désolée de ma pauvre connaissance sur HMTL T_T

  8. 30/01/2013 15:47

    @Tra VU : En l’occurrence, je crois que vos connaissance du HTML ne sont pas en cause.
    Quand on met le chemin //body, Yahoo Pipes ne trouve rien non plus.
    Ce qui me laisse plutôt croire que c’est un pb de temps de réponse : la page met du temps à s’afficher dans mon navigateur, et peut-être Yahoo Pipes est-il moins patient que mon navigateur…
    Bref, je ne peux rien pour vous… à part vous proposer Feed43.com
    C’est un autre outil de gestion de flux RSS, (encore) moins sexy de Yahoo Pipes, et qui parfois a moins de scrupules dans le traitement des pages web.
    Bref, votre page transformée en RSS donne ça :
    http://feed43.com/7610788546266153.xml

    Et si vous voulez voir comment c’est fabriqué, et modifier le flux, c’est là : http://feed43.com/feed.html?name=7610788546266153

  9. Tra VU permalink
    06/02/2013 12:05

    @Etienne Cavalié
    Désolée de ma réponse tardive car ces dernier jours, j’étais tellement débordée.
    Merci pour votre conseil concernant Feed43. J’essaierai à tester avec Feed43.
    De ma part, j’ai déjà utilisé Page2RSS, mais je n’aime pas trop.
    Si possibile, pourriez vous essayer de créer de flux RSS avec Yahoo Pipes pour ces deux pages :
    https://www.marches-publics.gouv.fr/?page=entreprise.EntrepriseAdvancedSearch&AllCons
    http://www.klekoon.com/boamp/BOAMP_2_List.asp?motcle=+&ActiviteListeID=74&Departement_ListeID=67%2C68&ETOU=1&periode_parution=4
    Si ça ne marche pas avec ces deux pages, donc, il me faut retourner vers Feed43.
    Merci et bonne journée

  10. 06/02/2013 12:49

    @Tra VU
    pour Klekoon : c’est là http://pipes.yahoo.com/pipes/pipe.info?_id=4d4a3c4a0c92ca03ce6ffcb587753913 (à dupliquer, je supprimerai ensuite le mien)
    Pour le site marches-public.gouv.fr : message d’erreur 403. Je ne peux rien faire pour vous

  11. Tra VU permalink
    08/02/2013 09:47

    @Etienne Cavalié
    C’est parfait. Grand merci à vous.
    J’ai déjà « save a copy ».
    Merci de nous partager vos connaissances étant très utile pour notre travail.

  12. 09/02/2013 17:15

    J’ai créé mon flux du journal officiel du jour grâce à ce tutoriel, c’est tout simple en effet, merci beaucoup !
    Maintenant, j’aimerais pouvoir filtrer dans la page http://www.legifrance.gouv.fr/affichJO.do uniquement ce qui se trouve en-dessous de :
    Décrets, arrêtés, circulaires
    Ministère du travail, de l’emploi, de la formation
    Ici, il n’y a pas de classe spécifique qui caractérise les liens que je souhaite isoler, mais un emplacement entre certaines balises de titre. Je ne sais pas comment demander ça à Pipes. Ce n’est pas faute d’avoir essayé, promis 🙂

  13. 10/02/2013 14:47

    @Marc André : là, comme ça, je ne vois qu’une solution, travailler avec le module Fetch Page (dans la rubrique « Deprecated » :
    1. prend le texte disponible depuis
    « Ministère du travail, de l’emploi, de la formation professionnelle et du dialogue social »
    jusqu’à « Ministère  » (rubrique suivante)
    avec en séparateur d’items : </li>
    Rq : ça ne fonctionne que si le Ministère n’est pas le dernier dans la liste, et s’il n’apparaît pas dans les autres rubriques du site (comme Avis et communication)
    http://pipes.yahoo.com/pipes/pipe.info?_id=80cb005163994128945463b3fcac3066

    Mais comme j’ignore ce que Yahoo Pipes fera des pipes utilisant déjà Fetch Page lorsqu’il le supprimera définitivement… peut-être devriez-vous vous tourner vers Feed43, vous aussi ?

  14. 10/02/2013 17:13

    @Etienne Cavalié: Ah très bien, je pensais que Fetch Page avait disparu. Donc pour le moment, ça me convient très bien. Je vais quand même voir comment faire fonctionner ça s’il y a d’autres occurrences du ministère en question dans les autres rubriques. Vous faites bien de le faire remarquer car ça peut en effet arriver. C’est très bien, ça va me faire de l’entraînement.
    Merci beaucoup pour votre aide

  15. 10/02/2013 21:02

    A propos de la méthode pour isoler les éléments nécessaires au fonctionnement du RSS (title, description, link), le module « Create RSS » expliqué ici http://www.stratieo.com/les-modules-de-yahoo-pipes-fonctionnalites-niveau-1/yahoo-pipes-create-rss-2/ est vraiment efficace. Pour les débutants comme moi, ça me semble plus accessible que les méthodes ayant recours aux fonctions Regex, avec lesquelles je me suis un peu cassé les dents (sur d’autres sujets que le JO dont on parlait plus haut). Le Regex a peut être l’avantage d’épurer le code généré par Pipes ? Sinon, quel est intérêt ?

  16. 11/02/2013 10:01

    @Marc André : je me sers du regex pour un tas d’autres choses que pour les pipes, c’est pour ça que je l’utilise.
    De même quand je veux convertir un fichier Excel en XML, j’utilise le publipostage de préférence à l’export XML, parce que je le connais mieux.
    Et si vous demandez à un informaticien le meilleur CMS, il vous indiquera sans doute celui qu’il connaît le mieux, pour peu qu’il en soit lui-même content).

    Dans mes tutos, je rends compte de ce que je sais faire, pour que d’autres sachent le faire aussi. Qu’il y ait d’autres manières, c’est possible et probable. Je les découvrirai le jour où je buterai sur une impasse avec mes compétences actuelles (ainsi, je devrai peut-être me lancer un jour dans le YQL, mais tant que je peux, je repousse).

  17. 11/02/2013 13:43

    Merci pour cette réponse, tout à fait recevable 🙂
    En ce qui me concerne, XPath Fetch Page + Create RSS, c’est déjà très puissant, et facile.
    Et merci pour ces tutos, qui m’ont ouvert bien des portes.

  18. meastintelligence permalink
    14/02/2013 13:02

    Bonjour et merci pour ces superbes explications. J’ai réussi à créer mon Rss sans aucun problème.

    Hélas, je voudrais faire un RSS sur bloomberg avec yahoopipes mais je n’arrive à englober que le titre alors que j’ai besoin de la description pour affiner mon filtrage RSS.
    Pour avoir le titre rien de plus facile : //h3/a suffit !

    Mais je n’arrive pas à obtenir la description. Du coup j’ai essayé plusieurs méthode sans succès. J’ai essayé ceci :

    html/body/div/div/div/div/div/div[@class=’news_item clearfix’]

    Pourriez vous m’aider s’il vous plait ???

    Merci et bonne journée à tous !

  19. Emmanuel permalink
    15/03/2013 16:55

    @Marc André
    La solution xpath pour ton problème de ministère :
    //h3[contains(., »Décrets, arrêtés, circulaires »)]/following-sibling::*//h5[contains(., « Ministère du travail, de l’emploi, de la formation professionnelle et du dialogue social »)]/following-sibling::*//a

    Il n’est pas possible de n’extraire que ce qui se trouve sous « Décrets, arrêtés, circulaires » car le document manque de structure. On peut toutefois ajouter un filtrage des seuls décrets par exemple en ajoutant une clause au « //a » final : a[contains(., »Arrêté »)]

  20. Tra VU permalink
    28/03/2013 09:57

    Bonjour,
    Il me reste encore une question :
    Je veux créer 1 RSS pour suivre l’actualité (à gauche) de ce site : http://www.handeco.org/. Et j’ai testé avec 2 solutions : Xpath & Feed43, aucun outil me donne la satisfaction,car :
    – Avec Xpath dans Yahoo Pipes : j’ai créé un flux RSS avec le titre (c’est bon), mais sans liens (ouff..) : http://pipes.yahoo.com/pipes/pipe.info?_id=25a7290eded8ff45504c77c8cb9c3177; ou bien, un flux RSS avec lien, mais sans titre explicite 😦
    – Je ne réussis pas à créer un flux RSS de ce site avec Feed43 😦
    Pourrais tu m’aider en trouver une solution avec Yahoo Pipe (avec Xpath) pour expliciter les titres de chaque article?
    Merci par avance,

  21. Clément RIBEAUD permalink
    09/04/2013 13:33

    Bonjour,
    je viens de suivre les tutoriaux et je souhaite créer un Pipe qui me sortirait un flux RSS minimum (titre, description, lien) contenant les résultats d’une recherche sur le site du civiweb : http://www.civiweb.com/FR/offre-liste/zone-geographique/3.aspx .

    Grâce à des Xpath suivi de rename, je peux sortir les infos que je veux (le titre, la boite et le lien de l’offre) cependant je le fait en sortant les infos dans des RSS séparés.
    J’aimerais récupérer un seul flux avec les 3 infos sur chaque billet et non un billet à chaque fois.

    Voila le lien vers mon pipe en cours : http://pipes.yahoo.com/pipes/pipe.info?_id=b9dc2790c4babece521eb07654fe7a93

    J’ai surement raté quelque chose… Je débute sur les pipes même si j’aime beaucoup les possibilités de cet outils !

    Merci

  22. 10/04/2013 07:58

    @Clément : le chemin XPath indiqué dans le module XPath Fetch Page doit englober à la fois Titre, Description et Lien.
    Cela vous permet de constituer des items au sein desquels vous désignez à Yahoo Pipes ce qui est titre, description ou URL.

    Donc un seul module XPath Fetch Page qui attrape les lignes du tableau (balises tr)
    //div[@class=’marges’]//tr
    Où il faudra ensuite nettoyer certaines lignes sans intérêt (parce que le tableau est curieusement constitué) avec le module Filter

  23. Alexis permalink
    15/04/2013 20:20

    Bonjour.
    Tout d’abord merci pour vos tutoriels sur Yahoo! Pipes : débutant, je m’y réfère souvent dans mes premiers pas, et les relire me permet de résoudre des problèmes.
    Ce message est pour vous demander s’il vous serait possible, s’il vous plaît, de développer le module Xpath.
    Pour ma part, j’ai réussi à créer un Pipe avec ce module par essais et erreurs. Mais, débutant, c’est un exploit que j’ai du mal à reproduire.
    J’ai ainsi différents ‘tr’, ‘td’, ‘tbody’, ‘class’, ‘table’ et j’en passe sur une page web que je tente de transformer en flux.
    L’élément le plus « bas » (dans votre tutoriel vidéo il s’agit de la balise « a ») est « tr ». Mais vue qu’il y en a plusieurs (de « tr »), le résultat n’est pas celui attendu. Je pense qu’il y a un noeud que je n’identifie pas pour « restreindre » la sélection qui m’intéresse et descendre de noeud en noeud.
    D’où ma question : vous serez-t-il possible d’approfondir la question ?

  24. Alexis permalink
    16/04/2013 15:33

    Re
    Désolé mais je n’y arrive pas. J’y ai passé une bonne partie de la nuit et de la journée. Si vous avez des pistes, je suis preneur.
    Je tente de créer un flux RSS avec http://www.cap-territorial.fr/accueil.aspx?aff=liste et comme unique critère le département de l’Aisne.
    Je n’arrive pas à accéder au tableau des résultats, ni même à m’en approcher.

    Je tente d’y accéder en passant de nœud en nœud i.e. que j’entre dans le module XPath le chemin /html, je regarde le résultat dans le debugger, je sélectionne le nœud suivant (ici /html/body) et ainsi de suite.
    Je vous laisse imaginer le temps que j’y passe à explorer chaque nœud !
    Mais en plus, je fini toujours par obtenir le même résultat : le tableau de gauche (avec les sections « critères de recherche », « partenaire », « espace personnel », etc.). Même résultat si j’entre dans le module Xpath //tr.
    Avec //td j’obtiens « qui sommes nous », « Accéder à mon profil », etc. et 48 autres résultats mais je n’y ai pas accès.

    Jamais je n’obtiens le tableau des résultats à droite dans le debugger. Je fini par croire que la page est paramétrée pour empêcher ce genre de manipulations ou emploie un langage de programmation différent du module XPath.
    .
    Alors si vous avez des pistes de réflexion que je puisse suivre, merci.

  25. 17/04/2013 08:00

    @Alexis : le problème ne vient pas de Yahoo Pipes, ni d’une « volonté » du site d’empêcher ce genre d’utilisation (en tout cas j’en doute)
    En revanche il est exact qu’il est impossible d’obtenir un lien profond vers une liste de résultats (c’est-à-dire une URL qui serait propre à une requête, donc à une liste de résultats) pour ce site, du fait des technologies utilisées pour la base de données et le formulaire de recherche qui y donne accès.
    Pourtant, j’ai déjà eu l’occasion de triturer pas mal de formulaires, mais sur celui-ci je suis impuissant, désolé !

  26. Alexis permalink
    17/04/2013 08:45

    Merci d’y avoir jeté un œil Lully : ça me rassure, puisque ma « méthode » est efficace bien que la votre soit quand même plus rapide.

    Un peu fatigué de ce site, je suis passé à un autre : en laissant reposer les neurones ou en résolvant d’autres soucis, l’illumination peut se faire (autrement dit : « c’est en forgeant qu’on devient forgeron »).

    Si je trouve la solution, je vous en ferais part.

    Pour information, il semble que certains sites bloquent la création de flux (http://www.joshcanhelp.com/craigslist-feeds-blocked-from-yahoo-pipes-via-403-error).
    Confronté à ce nouveau problème, je suis en train de faire des recherches pour approfondir le sujet.

    Cette recherche m’a conduit à ce sujet http://forums.searchtempest.com/viewtopic.php?f=4&t=878
    Je suis en train d’explorer ce forum : il pourrait être utile pour résoudre des soucis. Alors je partage le lien au cas où ça vous intéresserez.

    Encore merci du temps que vous avez bien voulu me consacrer.

  27. Alexis permalink
    22/04/2013 19:31

    Bonjour

    Je poursuis mes recherches sur le sujet.
    Il s’avère que le site est construit avec du javascript (/html/head), ce qui le rend « invisible ». Il m’a fallu du temps pour trouver cette simple information…
    Il y a probablement une solution et à force de chercher j’ai trouvé ce lien : http://thinknook.com/convert-json-to-xml-using-yahoo-pipes-2011-11-13/
    Enfin… Si j’ai bien compris… Mais bon, ça doit être du côté de JSON et YQL qu’il faut regarder au vue de mes multiples recherches.
    Je poursuis dans cette direction mais si vous aviez des informations plus ciblées, ça m’avancerait beaucoup, merci.

  28. CORNUT permalink
    22/08/2013 11:17

    Yahoo Pipes est fascinant, mais ce n’est rien à côté de vos tutos 😉 Merci, merci beaucoup !
    J’avance plutôt empiriquement sur Yahoo Pipes via l’apprentissage par l’erreur !
    Je travaille pour une association de protection de la nature et souhaite faire une veille sur les avis de l’autorité environnementale, les enquêtes publiques, les marchés publics…

    Je commence par du simple, néanmoins compliqué pour moi.
    Voici un Pipe pour suivre les avis de l’autorité environnementale (sur les projets de 2013 dans l’Ain) :
    pipes.yahoo.com/pipes/pipe.run?_id=2e18f8955c692e83384c76f8e2e370a9&_render=rss

    – Je sais déjà que je mélange la méthode Xpath et Fetch
    – Ma boucle Title ne sert à rien puisqu’en inscrivant « item.content » dans title du module Create RSS j’arrive à la même chose. Grâce à X Path YahooPipe extrait de lui même le title du content.
    – Je souhaite que mon item.link soit l’adresse du site d’origine, c’est tout bête, j’ai essayé une boucle link comme suggéré à Mike le 10/11/2011 (commentaire du tuto 7). Ma méthode fonctionne presque mais il reste un bug (pourtant l’accès au site n’est pas protégé)
    – enfin, peut-on avoir un flux RSS avec 2 links ?, 1 vers le site d’origine, 1 vers la cible de téléchargement de l’item considéré (item.p.a.href) ?

    Encore merci beaucoup pour vos tutos et le suivi de votre site

  29. 27/08/2013 10:33

    @Cornut : en fait vous n’avez pas fait de confusion entre XPath et Fetch
    Dans le module XPath Fetch Page, il y a une case à cocher ou décocher : « Emit result as string »
    Si la case est cochée, le résultat sera à traiter comme une chaîne de caractères, donc à découper avec des regex. Si elle est décochée (comme c’est le cas dans votre pipe actuel), il faut faire un loop avec à l’intérieur un module « String Builder » où le paramètre sera le nom de l’élément à récupérer (item.strong mettre en sortie comme item.title, par exemple)
    J’ai dupliqué et modifié votre pipe ici :
    http://pipes.yahoo.com/pipes/pipe.edit?_id=2e18f8955c692e83384c76f8e2e370a9#2ca215ae882a352e15598f3b6bba23df
    Ce que vous aviez fait est toujours dans la partie gauche, et les modifs apportées dans les modules à droite.

  30. CORNUT permalink
    27/08/2013 11:30

    Génial.

    Merci pour ces explications et corrections.
    Merci pour l’astuce du « link » vers le site d’origine.
    Votre pipe montre qu’on peut se passer :
    – du module Create RSS
    – d’écrire les chemins d’accès entier (item.strong au lieu de item.strong.0 ou item.p au lieu de item.p.a).
    Il ne me reste plus qu’à adapter ça pour tous les sites que je souhaite suivre.

    Encore merci.

  31. 11/09/2013 22:07

    Pour récupérer des données qui proviennent de requêtes en Ajax, c’est presque impossible. Par contre, il est possible, quelque fois, de contourner un blocage de page pour Yahoo! Pipes ou feed43 en générant une copie fantôme de page en PHP. Cela peut paraître un peu barbare comme ça mais cela fonctionne assez bien. Vous trouverez facilement sur google les quelques lignes de PHP pour cloner une page et ne pas oublier d’ajouter une ligne pour recréer l’URL pour que les liens ne reprennent pas votre hébergement comme base mais celui du site cloné.

Trackbacks

  1. Yahoo Pipes : tutoriel 7 (créer un fil RSS) « Bibliothèques [reloaded]
  2. Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) | La quotidienne | Scoop.it
  3. Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) | Doc Num - Informatique Doc | Scoop.it
  4. Transformer une liste sur une page web en un flux RSS avec Yahoo Pipes | François MAGNAN - Documentaliste et Formateur Consultant | Scoop.it
  5. Transformer une liste sur une page web en un flux RSS avec Yahoo Pipes | Veille et Recherche | Scoop.it
  6. Veille recherche documentaire les outils | Pearltrees
  7. Transformer une liste sur une page web en un flux RSS avec Yahoo Pipes | Sivva
  8. Transformer une liste sur une page web en un flux RSS avec Yahoo Pipes | SIVVA | Scoop.it
  9. A cabler manuellement | Pearltrees
  10. Transformer une liste sur une page web en un flux RSS avec Yahoo Pipes | Patrick CUENOT, Consultant & formateur senior "Methodologie et outils de Veille Stratégique" | Scoop.it
  11. Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) | Portail de bibliothèques et numérique en bib | Scoop.it
  12. Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) | ma veille perso | Scoop.it
  13. Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) | Bibliotheque et numérique | Scoop.it
  14. Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) | Multimedia et TIC

Commentaires fermés