2016-03-26 22 views
5

Próba automatycznego programowego przejrzenia ostatnio wyświetlanych danych poza programem Netflix, ale z pewnymi problemami tylko w fazie logowania. Mój obecny kod właśnie powoduje Netflix pluć powrotem We were unable to process your request. strony:Skrobanie 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); 
     }); 
    } 
}) 

jakieś pomysły?

Co zaskakujące, Google nie ma prawie nic na Scraping Netflix.

+0

Czy używają uwierzytelniających plików cookie? Są lepsze biblioteki do tego w Javie i Pythonie. Spróbuj Ui4j lub selen. Dla nodejs, spróbuj https://www.npmjs.com/package/selenium-webdriver. Większość dzisiejszych witryn zrobi więcej, niż zapewni podstawowy stan widoku. Może zajść potrzeba przetworzenia javascript. Może to wynikać z wymogu authcode. –

+0

@Jazcash Również, jeśli nie masz firebuga i firefox, poleciłbym je. To lub wireshark. Użyj firebug, aby wyszukać pozostałe parametry postu lub inne opcje. Widzę więcej parametrów, niż podałeś, a witryna cheerio strukturyzuje twoje stanowisko inaczej. Z mojego punktu widzenia wygląda na to, że przesyłasz parametry zapytania, a nie dane formularzy (np. 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

kiedy użyłem wyszukiwarki "skrobanie netflix", dostałem 400 000 przedmiotów. Czy to nie wystarczy? ;-) Dobre rzeczy powyżej. Powodzenia! – shellter

Odpowiedz

9

Zdobione potrzebne do:

  1. Wyślij jakikolwiek user-agent ciąg
  2. Wyślij dane formularza za pomocą życzenie za form param
  3. Wyślij ciasteczka ręcznie

tutaj mój ostatni kod, który otrzymuje najnowszą obserwowaną pozycję:

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()); 
      }); 
     }); 
    } 
}) 
Powiązane problemy