2016-11-22 55 views
0

我似乎做错了什么。JavaScript刮板登录

我有一个学生网站,我想刮,但首先我需要登录。目前我有一个python刮刀,它做到了。该网站通过发送邮件请求登录到包含sid和PIN的网址。

var login_url = 'https://example.com'; 

var formData = { 
    sid: 'username', 
    PIN: 'password' 
} 

我该如何去创建相同的刮板,但与JavaScript?我已经看到了请求库,这看起来像我想要使用但无法使其工作。

+0

https://github.com/request/request#forms – doublesharp

+0

@doublesharp谢谢,我已经看到了,并试过它,但它仍然没有登录。 –

+0

我刚刚发布了一个例子作为答案。确保您检查回调中的结果,以确保服务器没有响应错误等。 – doublesharp

回答

0

您需要使用request模块将POST the form data添加到您的端点。服务器的响应将返回到.post()方法。

const request = require('request'); 
// do not reassign "request", if you need to set properties us a different variable 

// use the action= value from the form for the URL 
const url = 'https://central.carleton.ca/prod/twbkwbis.P_ValLoginn'; 
const data = { 
    sid: 'username', 
    PIN: 'password', 
}; 

request.post({ url: url, formData: data }, (err, response, body) => { 
    if (err) { 
     console.log('failed', err); 
    } else { 
     console.log('the response', body); 
    } 
}); 

如果您对分析生成的HTML感兴趣,我推荐使用CheerioJS - 很像jQuery,但是服务器端。

+0

谢谢你的帮助,我试了一下代码,但仍然无法使它工作。问题似乎与URL,但它在我的Python刮板工程。这可能不是我需要的JavaScript吗?我通过监视使用chrome的网络选项卡登录后发送的发布请求来获取URL。 –

+0

我用您应该使用的正确URL更新了答案。我运行的代码,它的工作原理,我只是得到了预期的验证错误。 – doublesharp

+0

感谢您的帮助,我将它与cookies结合在一起,它完美地工作! –