我可以在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