2016-03-26 39 views
5

नेटफ्लिक्स प्रोग्रामेटिक रूप से अपना अंतिम बार देखा गया डेटा प्राप्त करने का प्रयास कर रहा है, लेकिन लॉगिन चरण के साथ कुछ समस्याएं हैं।स्क्रैपिंग नेटफ्लिक्स

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. पेज का कारण बनता है?

आश्चर्य की बात है कि Scraping Netflix के लिए Google पर कुछ भी नहीं है।

+0

क्या वे प्रमाणीकरण कुकीज़ का उपयोग कर रहे हैं? जावा और पायथन में इसके लिए बेहतर पुस्तकालय हैं। Ui4j या सेलेनियम का प्रयास करें। नोडजेस के लिए, https://www.npmjs.com/package/selenium-webdriver आज़माएं। अधिकांश समय साइटें बुनियादी दृश्य स्थिति प्रदान करने से अधिक कुछ कर सकती हैं। आपको जावास्क्रिप्ट को संसाधित करने की आवश्यकता हो सकती है। यह authcode आवश्यकता से स्पष्ट हो सकता है। –

+0

@Jazcash इसके अलावा, अगर आपके पास फायरबग और फ़ायरफ़ॉक्स नहीं है तो मैं उन्हें अनुशंसा करता हूं। वह, या तारों की दुकान। किसी भी शेष पोस्ट पैरामीटर या अन्य विकल्पों को देखने के लिए फ़ायरबग का उपयोग करें। मैं आपके द्वारा प्रदान किए गए मुकाबले अधिक पैरामीटर देख रहा हूं और चीरियो साइट आपकी पोस्ट को अलग-अलग बनाती है। मेरे अंत से ऐसा लगता है कि आप क्वेरी पैरामीटर सबमिट कर रहे हैं और डेटा नहीं बनाते हैं (उदाहरण के लिए 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

जब मैंने 'स्क्रैपिंग नेटफ्लिक्स' को गुगल किया तो मुझे 400 के आइटम मिल गए। क्या वह पर्याप्त नहीं है? ;-) ऊपर अच्छी चीजें। सौभाग्य! – shellter

उत्तर

9

यह पता चल, करने के लिए आवश्यक:

  1. उपयोगकर्ता के एजेंट स्ट्रिंग
  2. किसी भी प्रकार भेजें अनुरोध के form परम का उपयोग कर प्रपत्र डेटा भेजें
  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()); 
      }); 
     }); 
    } 
}) 
संबंधित मुद्दे