Pièces détachées

Pour construire notre robot nous avons besoin des ces divers éléments :

  • Ruby
  • La bibliothèque Mechanize
  • Un éditeur de texte, si vous êtes sous windows je vous conseille d'aller voir du côté de chez e-texteditor

Assemblage

Nous allons étudier un exemple fourni dans la documentation de Mechanize : celui qui permet d'envoyer automatiquement une image sur le site Flickr.

require 'rubygems'
require 'mechanize'
 
agent = WWW::Mechanize.new

 
# Page de connexion à Flickr
page  = agent.get('http://flickr.com/signin/flickr/')
 
# Remplissage du formulaire de connexion
form  = page.forms.name('flickrloginform').first

form.email = ARGV[0]
form.password = ARGV[1]
page  = agent.submit(form)
 

# Page de transfert
page  = agent.click page.links.text('Upload')
 
# Remplissage du formulaire de transfert
form  = page.forms.action('/photos_upload_process.gne').first

form.file_uploads.name('file1').first.file_name = ARGV[2]
agent.submit(form)

Rien qu'en lisant le code on arrive déjà à comprendre le fonctionnement général de cet exemple. On retrouve les classiques inclusions de bibliothèque et initialisations d'objets au debut du script.

Mechanize permet d'effectuer toutes les actions que ferrait un visiteur humain sur une page web. Notre robot commence donc par ouvrir la page de connexion de Flicker en utilisant le fonction get. Puis il trouve le formulaire avec forms.name('nom_du_formulaire').first et remplis chaque champs : la fonction précédente nous a retourné un objet initialisé avec tous les champs du formulaire, on peut y accéder directement.

Il ne nous reste plus qu'a soumettre ce formulaire, c'est ce que fait la méthode submit, ça reviendrait à cliquer sur le bouton Get in there si on était un vrai visiteur en chair et en os.

Voila, on est connecté, pour transférer une image il faut simuler un clic sur le lien texte Upload, c'est ce que fait le morceau de script qui suit (Le agent.clic ...) et remplir le nouveau formulaire, celui du transfert. On notera la fonction file_uploads qui facilite bien les choses ...

 
En savoir plus
 
 
 

Le transfert commence dès qu'on valide ce dernier formulaire.

Vous avez vu, c'est vraiment très simple. Il ne vous reste plus qu'a créer votre propre script pour automatiser vos tâches de navigation qui seraient un peut trop rébarbatives. Vous pouvez vous en servir pour exemple mettre à jour un site de façon régulière en plaçant votre script dans une tâche cron.

Contenu proposé sous licence Creativ Commons par Stéphane Brun