Extraire les données HTML de son compte Koodo avec NodeJS et CasperJS

Mon billet de la semaine dernière n’était pas un hasard. À temps perdu, j’ai travaillé sur un projet qui me trottait en tête depuis que je suis client du service prépayé de Koodo. Ce projet consiste à utiliser CasperJS afin d’aller y extraire les données d’utilisation de mon forfait prépayé.

La principale motivation de ceci est de me permettre d’avoir accès à mes statistiques d’utilisation autrement que par le site web de Koodo. Ce point est plus une question de préférence qu’un irritant. Il faut savoir que Koodo offre une application iOS pour ses clients afin de consulter les informations de leur compte. Cependant, elle n’est pas accessible pour les clients du prépayé.

De plus, en archivant les données de mon côté, l’objectif sera de développer mes propres statistiques d’utilisations. C’est vraiment plus cette raison qui me motive dans ce projet.

Bienvenue à FrenchCoding.KoodoJS!

Avant tout, je dois dire que j’ai manqué d’inspiration pour ce nom de projet. C’est tout ce qui m’est venu en tête!

KoodoJS est fabriqué avec quatre composants bien distincts:

  • Utilisation de CasperJS et PhantomJS pour aller récupérer les données d’utilisation de mon compte (koodo.js)
  • NodeJS, afin de récupérer les fichiers JSON générés par le script CasperJS et les déposer dans la base de données. (koodoWatch.js)
  • MongoDB, pour stocker les données.
  • Powershell et les tâches automatisées Windows pour exécuter le script CasperJS à intervalles réguliers. (casper-koodo.ps1)

Le fonctionnement de tout cela est bien simple. La tâche automatisée exécute CasperJS à intervalles réguliers afin de produire un fichier JSON avec les données provenant du site de Koodo. Ensuite, une application NodeJS attend le fichier nouvellement créé et l’insère dans une base de données MongoDB.

C’est tout! Pour l’instant… :)

Plans pour l’avenir

Vous en conviendrez probablement avec moi. Après la lecture de mon code source, KoodoJS fait un peu brouillon. Il s’agit de la première étape de quelque chose qui a un peu de potentiel.

Dans les changements que je veux apporter à KoodoJS, il y a ceux-ci:

  • Raffiner un peu le code en place
  • Rendre un API accessible par le web. Actuellement, c’est bien, mais les données sont enregistrées sur mon ordinateur personnel. Pas pratique!
  • Produire des statistiques sur l’historique de consommation. Par exemple:
    • Analyse du rythme de consommation des données et des minutes.
    • Graphiques des statistiques d’utilisation
    • Prévision de coûts pour le forfait prépayé selon l’historique de consommation

Ressources supplémentaires

Publicité

Comment configurer PhantomJS et CasperJS sur un environnement Windows

Il y a de cela un bon moment que je me cherche une excuse pour m’initier au développement avec la librairie PhantomJS. Je me cherchais un projet à développer qui aurait une utilité pour mes besoins de Geek Alpha. Or, dernièrement, j’ai changé de fournisseur de téléphonie cellulaire pour le prépayé de Koodo.

Or, la seule façon d’avoir le solde de l’utilisation de son plan prépayé Koodo est de passer par le site libre-service de Koodo. Vous voyez là où je veux en venir? N’est-ce pas une belle occasion de s’initier à PhantomJS?

Qu’est-ce que PhantomJS?

Vous connaissez PhantomJS? Il s’agit d’une librairie vous permettant de contrôler une instance de l’engin WebKit à l’aide d’un riche API JavaScript. WebKit est l’engin qui propulse le rendu graphique de Safari notamment.

Ce qui est intéressant avec PhantomJS c’est la possibilité de manipuler des pages web avec les mêmes possibilités que le navigateur web que vous utilisez tous les jours. La principale utilité de PhantomJS c’est les possibilités d’automatisation de tests sur le rendu ou le fonctionnement d’un site web.

Pour vous donner une idée, le code suivant permet d’afficher dans une console le titre d’une page web.


var page = require('webpage').create();
page.open(url, function(status) {
var title = page.evaluate(function() {
return document.title;
});
console.log('Page title is ' + title);
});

view raw

title.js

hosted with ❤ by GitHub

CasperJS à la rescousse

CasperJS est une librairie permettant la bonification des fonctionnalités de scriptage ainsi que l’ajout de fonctionnalités permettant les tests unitaires de PhantomJS. CasperJS est un module complémentaire à PhantomJS.

Une image vaut mille mots. Le code suivant est l’équivalent de l’exemple précédent avec CasperJS.


var casper = require('casper').create();
casper.start('http://casperjs.org/', function() {
this.echo(this.getTitle());
});
casper.thenOpen('http://phantomjs.org', function() {
this.echo(this.getTitle());
});
casper.run();

view raw

casper.js

hosted with ❤ by GitHub

Installer PhantomJS et CasperJS sur Windows

L’installation se divise en deux étapes. La première étant l’installation de PhantomJS et la seconde est l’installation de CasperJS.

PhantomJS

  1. Télécharger la plus récente version pour Windows sur la page de téléchargement sur le site de PhantomJS. https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-windows.zip est le lien vers la version la plus récente, pour les paresseux.
  2. Décompressez le contenu de l’archive dans le répertoire c:\phantomjs
  3. Exécutez la commande SET PATH=%PATH%;C:\phantomjs\ afin d’ajouter le répertoire dans votre chemin de commande.

CasperJS

Notez que les instructions sont assez similaires à celles de PhantomJS. En gras, la différence avec les étapes de PhantomJS.

  1. Télécharger la plus récente version pour Windows sur la page de téléchargement sur le site de CasperJS. https://github.com/n1k0/casperjs/zipball/1.1-beta3 est le lien vers la version la plus récente, pour les paresseux.
  2. Décompressez le contenu de l’archive dans le répertoire c:\casperjs
  3. Exécutez la commande SET PATH=%PATH%;C:\casperjs\bin afin d’ajouter le répertoire dans votre chemin de commande.

 

Une fois ces deux installations réalisées, il suffit de redémarrer votre ordinateur afin que les changements au PATH soient appliqués. Pour tester le bon fonctionnement de vos configurations, en ligne de commande, vous pouvez exécuter les commandes suivantes:

  • phantomjs
  • casperjs

Vous avez maintenant tout en main pour vous lancer dans le développement d’interactions programmées avec JavaScript grâce à ces deux librairies. Bonne chance dans vos projets! Pour ma part, je vais me lancer dans l’extraction des données de mon utilisation Koodo et l’enregistrement dans ces données dans MongoDB.

Vous aurez plus de détails très bientôt!

Si vous voulez plus de French Coding, n’hésitez pas à suivre la page Facebook ou de me suivre sur Twitter.