Lorsque nous faisons une recherche, il est fréquent d'obtenir des résultats sur plusieurs pages accessibles par la pagination. En fonction de l'URL, nous allons réaliser un flux qui pourra récupérer les informations de quelques unes de ces pages en utilisant un spreadsheet sur Google Drive et Yahoo! Pipes.

Réalisons un flux RSS complexe

Pour cet exemple, nous allons partir d'une recherche sur le site du Monde avec le mot "internet". L'URL de cette recherche est http://www.lemonde.fr/recherche/?keywords=internet&qt=recherche_globale&page_num=1 pour la première page. Comme Yahoo! Pipes ne permet pas de réaliser une incrémentation qui nous permettrait de changer le numéro de chaque page (ici page_num=1), nous allons utiliser un spreadsheet (tableau type excel) de Google Drive.

Incrémentation sur un spreadsheet

Créons un tableau sur Google Drive. Sur la première ligne nous allons juste indiquer les données de chaque colonne. Ici j'ai mis sur la première colonne "NDD", sur la seconde "number" et sur la troisième "link" pour reprendre le terme de Yahoo! Pipes pour désigner les liens.

Sur la deuxième ligne, sous NDD, je colle l'URL de ma recherche en enlevant le numéro de page. Cela donne donc http://www.lemonde.fr/recherche/?keywords=internet&qt=recherche_globale&page_num=

Sous number, je mets le nombre "1" puis sous celle-ci j'inscris la formule "=b2+1". Lorsque je sélectionne ensuite cette dernière cellule, je vois apparaître en bas à droite de celle-ci un carré bleu. Je saisi ce carré et descends dans la colonne pour incrémenter de 1 en 1 et obtenir une liste de numéros.

spreadsheet1

spreadsheet2

Sous "link", je vais écrire une autre formule qui va me permettre d'obtenir un certain nombre d'URLs : =$A$2&B2
Il est important de bien mettre $a$2 pour ne pas incrémenter la partie NDD qui ne doit pas bouger. On y accole le b2, le "1". L'absence de $ va permettre sur la ligne suivante d'aller récupérer la valeur en b3, puis b4, puis b5, etc.

Comme pour le nombre précédemment, nous étirons la colonne avec le carré bleu.

spreadsheet3 spreadsheet4

Nos URLs sont prêtes, il ne reste plus qu'à obtenir l'URL de ce spreadsheet en CSV pour le récupérer dans Yahoo! Pipes. Pour l'obtenir, vous faites Fichier>Publier sur le web puis vous démarrez la publication et choisissez CSV. Il ne vous reste plus qu'à coller cette URL.

Pour cet exemple : https://docs.google.com/spreadsheet/pub?key=0AsaajCtCirq3dDRKdnl5RVB2YUxOZFNfTU16Q3o5a2c&single=true&gid=0&output=csv

spreadsheet5

Le Pipe pour établir avec xPath le modèle

Avant de récupérer le flux csv, nous allons établir le modèle de récupération des données à partir de la première page. Vous créez un Pipe puis collez l'URL du monde dans la partie debug d'un URL Input. Vous liez ensuite ce module à xPath (ici //section[@class="fleuve resultats_recherche clearfix"]/article) puis générez un flux RSS classique. Vous enregistrez votre Pipe puis créez un autre Pipe.

pipe1

Pour corriger la date de publication :

pipe2

Dans le deuxième Pipe, vous placez le module Sources "Fetch CSV" et vous y collez l'URL du CSV de votre spreadsheet.

pipe3

Ensuite, vous reliez ce premier module à un Loop dans lequel vous allez placer votre premier Pipe (il se trouve dans My Pipes). Vous indiquez alors que le URL Input doit récupérer en boucle toutes les URLs qui sont dans l'item link.

pipe4

Vous choisissez emit all results pour obtenir l'addition de toutes les informations créées. Vous reliez le Loop au Pipe Output et vous sauvegardez.

Il est possible que Yahoo Pipes ne chargent pas toutes les URLs prévues dans votre spreadsheet soit parce que vous dépassez un certain volume, soit parce que ça prend trop de temps. Généralement les dix premières URLs passent sans problème, il arrive parfois d'atteindre les 50 pages. Pour notre exemple, lorsque le Pipe charge 7 URLs, j'obtiens 80 résultats, ce qui est déjà assez important.

Voir le flux RSS final : http://pipes.yahoo.com/pipes/pipe.run?_id=e998ec562372188f9aa6f54915682775&_render=rss

À partir de cet exemple, il devient assez facile de générer un Pipe final qui ne vous demanderait que la requête et générerait automatiquement les x pages désirées. Je vous laisse le soin de réaliser ce Pipe ;-)

Similar Posts: