2016-03-26 53 views
5

Netflixから最後に閲覧したデータをプログラムで取得しようとしましたが、ログインフェーズだけで問題が発生しました。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); 
     }); 
    } 
}) 

任意のアイデア:私の現在のコードは、ちょうどWe were unable to process your request.ページを戻って唾を吐くためにネットフリックスの原因は?

驚いたことに、GoogleにはScraping Netflixのために何もないのです。

+0

認証Cookieを使用していますか?これにはJavaとPythonのライブラリがあります。 Ui4jまたはセレンを試してみてください。 nodejsについては、https://www.npmjs.com/package/selenium-webdriverを試してください。今日のサイトの多くは、基本的なビューステートを提供する以上に多くのことを行います。 javascriptを処理する必要があるかもしれません。これは、authcode要件から明らかです。 –

+0

@Jazcashまた、FirebugとFireFoxをお持ちでない場合、私はそれらをお勧めします。それ、またはwireshark。 Firebugを使用して、残りのポストパラメータまたはその他のオプションを探します。私はあなたが提供しているよりも多くのパラメータを見ています。私の最終的には、クエリのパラメータを提出していて、データをフォームにしていないようです(例:http://www.netflix.com/q?key=value v。url:....、form:{key:value})https ://www.webniraj.com/2015/03/16/nodejs-scraping-websites-using-request-and-cheerio/ –

+0

私はグーグルで「ネットフリックスを掻き集める」と私は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()); 
      }); 
     }); 
    } 
}) 
関連する問題