Created
August 5, 2015 23:33
-
-
Save icaromh/1df8f166cfef095dd572 to your computer and use it in GitHub Desktop.
Script em nodejs para navegar até o portal do aluno do SENACRS e buscar as informações financeiras :)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var timeInit = new Date(); | |
var Nightmare = require('nightmare'); | |
// Dados de acesso | |
var Aluno = { | |
usuario : 'seu_usuario', | |
senha : 'sua_senha', | |
unidade : '1' // número da unidade, ex.: 63 | |
}; | |
// URLS utilizadas | |
var Portal = { | |
'login' : 'http://apsweb.senacrs.com.br/modulos/aluno/login.php5?', | |
'financeiro' : 'http://apsweb.senacrs.com.br/modulos/aluno/consultaAreaFinanceira.php5', | |
'ajaxFinanceiro' : 'http://apsweb.senacrs.com.br/modulos/aluno/consultaAreaFinanceira.php5?ViewConsultaAreaFinanceiraXmlXsl[method]=loadParcelas&gvroute=f1d7198dfddbbeeb432fa3f8727a6da8ef3a063c&httpReferer=http://apsweb.senacrs.com.br/modulos/aluno/consultaAreaFinanceira.php5&enturmacao=null' | |
}; | |
new Nightmare() | |
// .viewport(800, 600) // Seta o viewport da "janela" para 800x600 | |
.goto(Portal.login) // navega até a página inicial | |
.wait() // espera carregamento da página | |
.wait() // espera pelo redirecionamento | |
// espera até serem carregadas as unidades | |
.wait(function(){ | |
document.getElementById('carregandoUnidades').getAttribute('style') | |
}, "visibility: hidden;") | |
// preenche os dados do aluno | |
.select('#lstUnidades', '1,' + Aluno.unidade) | |
.type('#usr', Aluno.usuario) | |
.type('input[type="password"]', Aluno.senha) | |
.evaluate(function(){ | |
FazerLogin(); // efetua o login | |
}) | |
.wait() // espera o usuário logar | |
// Executa uma requisição SINCRONA para buscar todos os dados financeiros do aluno | |
.evaluate(function(url){ | |
var xhr = new XMLHttpRequest(); | |
var postData = 'aluno=Todos&ano=Todos&tipo=Todos'; | |
xhr.open("POST", url, false); | |
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); | |
xhr.setRequestHeader("Content-length", postData.length); | |
xhr.setRequestHeader("Connection", "close"); | |
xhr.send(postData); | |
var response = xhr.responseText; | |
return response; | |
}, function(data){ | |
// Cria um arquivo JSON com os dados obtidos :) | |
try{ | |
var fs = require('fs'); | |
fs.writeFile('financeiro.json', data, function (err) { | |
if (err) throw err; | |
console.log('Arquivo salvo com sucesso :)'); | |
}); | |
}catch(ex){ | |
console.log('Problemas ao tentar transformar em JSON os dados :('); | |
} | |
}, Portal.ajaxFinanceiro) | |
.run(function(){ | |
var timeEnd = new Date(); | |
var difference = (timeEnd - timeInit) / 1000; | |
console.log('----------------------------------------------------'); | |
console.log('Executado em ' + difference + 's'); | |
console.log('----------------------------------------------------\n'); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "gvdata", | |
"version": "1.0.0", | |
"description": "Busca e salva os dados financeiros em JSON", | |
"main": "gvdata.js", | |
"scripts": { | |
"test": "echo \"Error: no test specified\" && exit 1" | |
}, | |
"author": "@icaromh", | |
"license": "WTFPL", | |
"dependencies": { | |
"nightmare": "^1.8.2" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment