我对javascript和nodejs很新。我必须用javascript编写一个网络爬虫,然后我找到了cheerio但我在这里遇到了一个问题。
function tryLogin(usn, pwd)
{
var request = require('request');
var cheerio = require('cheerio');
var loginLink = 'xyz';
var loginJar = request.jar();
var ltValue = '';
var executionValue = '';
console.log(1);
// First request to get session data
request.get({url: loginLink, jar: loginJar}, function(err, httpResponse, html)
{
var dat = cheerio.load(html);
var arr = dat('input[name="lt"]');
ltValue = arr.attr('value');
arr = dat('input[name="execution"]');
executionValue = arr.attr('value');
console.log(2);
});
console.log(3);
var loginBody = 'username=' + usn + '&password=' + pwd + '<=' + ltValue + '&execuation=' + executionValue
// Second request to login
request.post({url: loginLink, jar: loginJar, method: 'post', body: loginBody}, function(err, res, b)
{
if (b.indexOf('errors') != -1)
console.log('Success');
else console.log('Fail');
});
}
tryLogin('123', '456');
输出:
1 3 2
这似乎是第一个请求在第二个进程之前没有完成的所以&#34; loginBody&#34;没有完成,我无法登录。我来自C#,所以我不明白为什么会这样。