Vous avez sûrement déja constaté que la plupart des pages web agrègent des données provenant de différents sites. Cela peut se faire de bien des manières, de la simple balise html iframe jusqu'aux web services. Par ailleurs, certains sites comme wikipedia fournissent régulièrement aux publics les dumps de leur BD qu'il convient d'importer dans son propre SI aux prix de coûteuses manipulations.
Sans aller jusqu'à cette extrémité, dans une optique de data mining, il est parfois très intéressant de construire sa propre page web en agrégant le contenu partiel (statique ou dynamique) de plusieurs autres pages sans qu'un protocole autre que http soit disponible et donc pratiquer le web scraping. C'est ce que nous faisons avec notre Dashboard. qui synthétise des informations arrivant en format mediaWiki, encapsulées entre 2 balises <text> dans plusieurs pages XML, dans une page locale unique au format html.
Ce type d'architecture logicielle est dite RESTful.

La faisabilité technique repose sur l'objet XMLHttpRequest et c'est lui qui se cache derière le A de AJAX en permettant de lancer des requêtes asynchrones à un serveur http.
L'exemple le plus connu reste google maps où le contenu de la zone carte/image satellite évolue avec les actions de la souris dans la page.

Dans le Dashboard, les appels au serveur wikipedia ne sont fait qu'une seule fois au chargement de la page et le DOM de la page est modifié une fois la page affichée (où le tableau est alors vide). A ce titre nous faisons probablement du AJAX lite ;)

L'étape la plus délicate n'est pas la récupération cachée d'un flux de donnée http mais le parsing de ce flux qui ne se prête pas forcément bien à l'extraction de données. Une fois les infos repérées avec la méthode de l'objet String indexOf, substring permet leur extraction et innerHTML leur réinjection dans la page courante.

Cette méthode autorise par exemple la construction de cette vue synthétique de variation de cours boursiers à partir des pages boursorama.
Screenshot.Ajax.CoursBourse.png
PS: Ce billet passe sous silence d'éventuels copyrights qui peuvent exister sur les contenus ainsi récupérés.