Javascript Node.js webscraping与robost的身份验证
我遇到了登录站点以获取数据的post请求问题。我需要给uname密码和scraped健壮值。 我试图从网站上获取数据。现在整个刮削过程令人困惑。我正在使用NodeJS。代码如下: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
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
},
希望这有帮助