使用Cheerio Nodejs进行Web爬行

时间:2017-11-16 05:04:34

标签: javascript node.js cheerio

我对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 + '&lt=' + 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

这似乎是第一个请求在第二个进程之前没有完成的所以" loginBody"没有完成,我无法登录。我来自C#,所以我不明白为什么会这样。

0 个答案:

没有答案