繁体   English   中英

强大的Node.js Web抓取身份验证

[英]Node.js webscraping authentication with robost

我在登录网站以抓取数据的发布请求中遇到麻烦。 我需要提供uname密码和可靠的价值。 正在尝试从网站上获取数据。 现在,整个抓取过程令人困惑。 我正在使用Node js。 这是代码:

    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查询格式发送数据。 但是,对于要发送到request的帖子数据,我建议将credentials变量转换为如下所示的对象-

var credentials = {
    userName : uname,
    password : pwd,
    qreply :chunk
};

然后在您的request POST方法中将该数据发送为-

request.post({
    uri: 'Myweblink',
    headers: {'content-type': 'application/x-www-form-urlencoded'},
    form: credentials
},

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM