我可以在Python和Ruby中做到這一點,但我想給Node.js一個鏡頭,迄今爲止整個刮擦過程都令人困惑。我無法登錄到網站以提取數據。這裏是代碼:Node.js webscraping認證
var request = require('request');
var cheerio = require('cheerio');
var credentials = {
username: 'kevin',
password: 'secret'
};
request.post({
uri: 'http://yourwebsite.com/login',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
body: require('querystring').stringify(credentials)
}, function(err, res, body){
if(err) {
callback.call(null, new Error('Login failed'));
return;
}
});
所以說我想在我登錄後刮。我是否更換憑證與字段ID下的用戶名和密碼?或者它是字段名稱?另外,我正在點擊提交(按鈕)的部分在哪裏?
編輯: 下面是我嘗試了一些其他網站的完整代碼:
var cheerio = require('cheerio');
var request = require('request');
var credentials = {
acct: '....',
pw: '.....'
};
request.post({
uri: 'https://news.ycombinator.com/login?whence=news',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
body: require('querystring').stringify(credentials)
}, function(err, res, body){
request('https://news.ycombinator.com', function(err, res, body) {
if(err) {
callback.call(null, new Error('Request failed'));
return;
}
var $ = cheerio.load(body);
var text = $('.pagetop').text();
console.log(text);
});
});
得到類似[_Charles Proxy_](http://www.charlesproxy.com/)的安裝。在網絡瀏覽器中自己發出請求。看看發送到服務器的內容。然後,你會對你需要從你的'node.js'代碼發送的東西有個好主意。 – 2014-09-29 20:49:47
謝謝我會研究它。 – user1452530 2014-09-29 21:08:47