2016-03-14 143 views
0
 var getMatches = function(){ 
var sait = 'https://www.website.com' 
request({ url: sait, jar: true}, function(error, response, html){ 
if(!error){ 
var $ = cheerio.load(html) 
var count = ($('.TheMatch').length) 
for(var i = 2; i< count + 2 ; i++){ 
    var live = ($('.TheMatch:nth-child('+i+') .LiveStatus').text()) 
    var nameMatch = ($('.TheMatch:nth-child('+i+') .MDxEventName').text()) 
    var time = ($('.TheMatch:nth-child('+i+') .DateTime').text().substring(8)) 
    var websiteCount = ($('.TheMatch:nth-child('+i+') .TotalBookies').text()) 
    if((websiteCount >= 25) && (live.length === 0)){ 
     console.log('match ' + nameMatch) 
     console.log('count Websites ' + websiteCount) 
    } 
}}})} 

我想在此网站上进行身份验证并保存cookie我该怎么做?并保存饼干,所以每次我解析不需要登录?使用节点js使用身份验证报废网站

回答

0

那么,我做了类似的任务。但问题是它始终是特定于网站的。无论如何,实现它的方法是使用请求库向网站的身份验证端点发出发布请求。然后,响应对象将包含适当的cookie,如sessionID或其他内容。然后你保存这个cookie并做一个新的请求,从头开始你想要的页面。这里是关于请求模块中的cookie的文档:https://github.com/request/request#requestcookie。这对我很好。

如何获得:

request.post({ url: "website/signin", 
        form: { 
         login: 'login', 
         password: "password", 
         remember: 1 
        } 
       }, function(err, httpResponse, body) { 
        var cooka = false; 
        var cookies = httpResponse.headers['set-cookie']; 
        if (typeof cookies != "undefined") cooka = cookies[0]; 
        if (typeof cooka != "undefined" && cooka != false) { 
         self.sessionId = cooka.substring(10, cooka.indexOf(";")); 
        } else { 
         return self.emit("error", "Can't get session id"); 
        } 
       }); 

如何设置:

var options = { uri: "desired url" }; 
      var j = request.jar(); 
      if (worker.source == "coquette") { 
       var cookie = request.cookie('PHPSESSID=' + worker.sessionId); 
       j.setCookie(cookie, url); 
       options.jar = j; 
      } 
      request.get(options, function(error, response, body) { 
       if (error || response.statusCode != 200) { 

       } else { 
       // work with body body 
       } 
      }); 
+0

回答更新。 –

+0

我得到这个错误,不能找到工作人员http://s9.postimg.org/80ea6tr7j/Screen_Shot_2016_03_15_at_10_03_47_PM.png –

+0

因为它是从我的项目复制/粘贴。即使我为您提供了99%的所需,作为开发人员,您自己也应该修复非常简单的错误。 self.sessionId和worker.sessionId是相同的东西,只需将其更改为var sessionId; –

相关问题