Voici un petit exemple de grammaire/script permettant de demander à S.A.R.A.H. la météo de demain.
Grammaire
Voici une grammaire très simple pour demander la météo:
<grammar version="1.0" xml:lang="fr-FR" mode="voice" root="ruleMeteo" xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0">
<rule id="ruleMeteo" scope="public">
<example>Sarah quelle est la météo pour demain ?</example>
<tag>out.action=new Object(); </tag>
<one-of>
<item>Sarah quelle est la météo pour demain</item>
<item>Sarah il fait quel temps demain</item>
</one-of>
<tag>out.action._attributes.uri="http://127.0.0.1:8080/sarah/phantom/meteo";</tag>
<tag>out.action.zip="78000";</tag>
</rule>
</grammar>
- Voici une documentation des balises XML
- L’attribut « uri » est une convention pour accéder aux scripts phantomJS
- L’attribut « zip » est forcé pour le code postal
Script
Voici le script associé à mettre dans /scipt/phantom/meteo.js:
// Inject helper
phantom.injectJs("../lib/scraper.js");
// Merge default options
var options = {'zip' :'78000'};
scraper.setOptions(options);
// Scrap
var url = 'http://mobile.meteofrance.com/france/ville/versailles/'+options.zip;
scraper.scrap(url, options, function(options, results){
var tr = $('DIV#prevision TABLE.prevSem1 TR:nth-child(4)');
results.tts = tr.find('TD:nth-child(1)').text() + ', '; // Days
results.tts += tr.find('TD:nth-child(2) IMG').attr('alt') + ', '; // Sun
results.tts += tr.find('TD:nth-child(3)').text(); // Temperature
});
En « Français » le code parcours le DOM (visible sous chrome: avec bouton droit > Inspecter)
- Dans la DIV qui a l’identifiant « prevision »
- on récupère la première TABLE ayant la classe « prevSem1 »
- puis on prend le 4ème TR correspondant à demain
- On concatène les 3 TDs, en utilisant l’attribut alt de l’image
Voici une documentation des sélecteurs jQuery



Laisser un commentaire