Javascript Node.js webscraping与robost的身份验证

Javascript Node.js webscraping与robost的身份验证,javascript,node.js,Javascript,Node.js,我遇到了登录站点以获取数据的post请求问题。我需要给uname密码和scraped健壮值。 我试图从网站上获取数据。现在整个刮削过程令人困惑。我正在使用NodeJS。代码如下: var request = require('request'); var cheerio = require('cheerio'); var qs = require('querystring'); url = "myweblik"; //headers: {'content

我遇到了登录站点以获取数据的post请求问题。我需要给uname密码和scraped健壮值。 我试图从网站上获取数据。现在整个刮削过程令人困惑。我正在使用NodeJS。代码如下:

    var request = require('request');
    var cheerio = require('cheerio');
    var qs = require('querystring');

    url = "myweblik";
    //headers: {'content-type': 'application/x-www-form-urlencoded'}

    var j = request.jar();
    var request = request.defaults({jar:j})

    request(url, function(error, response, body) {
      var $ = cheerio.load(body);
      temperature = $("[name='chkLoginForm']").text();  
      console.log(temperature);
    });

    process.stdin.resume();
    process.stdin.setEncoding('utf8');
    process.stdin.on('data', function (chunk) {
     //process.stdout.write('data: ' + chunk);

     if (chunk != 'undefine') {

    var uname = "XXXXX";
    var pwd = "YYYYY";
    var credentials = '?{actionForm.userName}='+uname+'&{actionForm.password}='+pwd+'&{actionForm.qreply}='+chunk;


    request.post({
        uri: 'Myweblink',
            headers: {'content-type': 'application/x-www-form-urlencoded'},
        body: qs.stringify(credentials)
    },
       function(err, res, body){

            if(err) {
            callback.call(null, new Error('Login failed'));
            return;
        }
    request('responsemy weblink', function(err, res, body) {
            if(err) {
                console.log('error occure');
                callback.call(null, new Error('Request failed'));
                return;
            }
    //console.log(body);
            var $ = cheerio.load(body);
            var text = $('.tablebody').text();
    console.log(body);
        });
    });

    }

    });

您正在以url查询格式发送数据。但是,对于要发送到
请求的post数据
,我建议将
凭证
变量转换为如下对象-

var credentials = {
    userName : uname,
    password : pwd,
    qreply :chunk
};
然后在您的
请求
POST
方法中,将此数据发送为-

request.post({
    uri: 'Myweblink',
    headers: {'content-type': 'application/x-www-form-urlencoded'},
    form: credentials
},
希望这有帮助