2016-03-26 6 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 Кроме того, если у вас нет firebug и firefox, я бы порекомендовал их. Это, или провода. Используйте firebug для поиска любых оставшихся параметров сообщения или других параметров. Я вижу больше параметров, чем вы предоставили, и сайт cheerio структурирует ваш пост по-разному. С моей стороны похоже, что вы отправляете параметры запроса и не формируете данные (например, 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

когда я googled 'очищающий netflix' У меня есть 400K предметов. Разве этого недостаточно? ;-) Хороший материал выше. Удачи! – 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()); 
      }); 
     }); 
    } 
})