2016-03-26 50 views
5

試圖以編程方式從Netflix中獲取我上次查看的數據,但僅在登錄階段出現一些問題。我目前的代碼只是導致Netflix回吐We were unable to process your request.頁面:刮Netflix

var request = require('request').defaults({jar: true}); 
var cheerio = require('cheerio'); 

var url = "https://www.netflix.com/Login?locale=en-GB&nextpage=https%3A%2F%2Fwww.netflix.com%2FWiViewingActivity"; 

request(url, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     var $ = cheerio.load(body); 
     var authCode = $("#login-form > input").attr("value"); 
     request.post(url+"?email=myemail%40gmail.com&password=mypassword&RememberMe=on&authURL="+authCode, { 
     }, function(err, response, body){ 
      console.log(body); 
     }); 
    } 
}) 

任何想法?

令人驚訝的是,Google上幾乎沒有Scraping Netflix

+0

他們使用認證cookie嗎? Java和Python中有更好的庫。嘗試Ui4j或硒。對於nodejs,請嘗試https://www.npmjs.com/package/selenium-webdriver。今天的許多時間站點不僅僅提供基本的視圖狀態。您可能需要處理JavaScript。這可以從authcode要求中明顯看出。 –

+0

@Jazcash另外,如果你沒有螢火蟲和火狐,我會推薦他們。那或者wireshark。使用螢火蟲查找任何剩餘的後期參數或其他選項。我看到的參數比您提供的還要多,cheerio網站的結構也不同。從我的結尾看來,您提交查詢參數而不是表單數據(例如http://www.netflix.com/q?key=value v。url:....,表單:{key:value})https ://www.webniraj.com/2015/03/16/nodejs-scraping-websites-using-request-and-cheerio/ –

+0

當我搜索'刮netflix'時,我得到了400K項目。這還不夠嗎? ;-)上面的好東西。祝你好運! – shellter

回答

9

想通了,需要:

  1. 發送任何類型的用戶代理字符串
  2. 的使用請求的form PARAM發送表單數據
  3. 發送餅乾手動

這裏的我的最終代碼獲得最新觀看項目:

var request = require('request').defaults({jar: true}); 
var cheerio = require('cheerio'); 

var url = "https://www.netflix.com/Login"; 

request(url, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     var $ = cheerio.load(body); 
     var authCode = $("#login-form > input").attr("value"); 
     request.post({url: url, 
      form: { 
       "email": "[email protected]", 
       "password": "password", 
       "authURL": authCode, 
       "RememberMe": "on" 
      }, 
      headers:{ 
       'User-Agent': "NodeScrape" 
      } 
     }, function(err, response, body){ 
      var cookies = response.headers['set-cookie']; 
      request({url: "https://www.netflix.com/WiViewingActivity", headers: {'Cookie': cookies, 'User-Agent': "NodeScrape"}}, function(error, response, body){ 
       var $ = cheerio.load(body); 
       console.log($(".seriestitle").eq(0).text()); 
      }); 
     }); 
    } 
})