2016-10-24 1 views
0

J'essaye de télécharger un lourd JSON qui est derrière une page de connexion. Le document fait environ 5 Mo et prend environ 60 secondes à charger sur ma connexion. J'ai essayé ce code mais j'ai toujours un objet vide. Des idées quel est le problème? Merci!Télécharger un JSON derrière une page de connexion avec cauchemar

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({ 
    typeInterval: 300, 
    show: true 
}); 

nightmare 
    .goto('https://pageThatRequireToLoginThenDiplayJsonAsText.com') 
    .type('[name=email]', '') 
    .wait(1000) 
    .type('[name=email]', 'myemail') 
    .wait(1000) 
    .type('[name=password]', '') 
    .wait(1000) 
    .type('[name=password]', 'mypassword') 
    .click('[type=submit]') 
    .wait(25000) 
    .wait(25000) 
    .evaluate(function (page, done) { 

    document.documentElement 
    done() 
    }) 
    .end() 
    .then(function (result) { 
    // fs.writeFileSync('testOutput.json', JSON.stringify(result)); 
    console.log(JSON.stringify(result)) 
    }) 
    .catch(function (error) { 
    console.error('failed:', error); 
    }); 

version Nightmare: 2.8.1

+0

Puisque vous ne renvoyez jamais le document, ce n'est pas un mystère que 'result' soit null. –

+0

Merci pour votre réponse. J'utilise le cauchemar. Même avec retour le résultat reste le même. :/ –

+0

J'utilise la version 2.8.1 de Nightmare. Qu'est-ce que tu en penses? –

Répondre

0

a trouvé la réponse. Fondamentalement, j'ai juste dû charger une deuxième fois l'url.

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({ 
    typeInterval: 300, 
    show: true 
}); 

nightmare 
    .goto('https://pageThatRequireToLoginThenDiplayJsonAsText.com') 
    .type('[name=email]', '') 
    .wait(1000) 
    .type('[name=email]', 'myemail') 
    .wait(1000) 
    .type('[name=password]', '') 
    .wait(1000) 
    .type('[name=password]', 'mypassword') 
    .click('[type=submit]') 
    .wait(25000) 
    .goto('https://pageThatRequireToLoginThenDiplayJsonAsText.com') 
    .wait(25000) 
    .evaluate(function (page, done) { 

    document.documentElement 
    done() 
    }) 
    .end() 
    .then(function (result) { 
    // fs.writeFileSync('testOutput.json', JSON.stringify(result)); 
    console.log(JSON.stringify(result)) 
    }) 
    .catch(function (error) { 
    console.error('failed:', error); 
    });