2014-09-29 4 views
0

파이썬과 루비에서이 작업을 수행 할 수 있습니다.하지만 Node.js를 사용하고 싶었고 지금까지 전체 스크래핑 프로세스가 혼란 스럽습니다. 데이터를 스크랩하기 위해 사이트에 로그인하기위한 게시물 요청에 문제가 있습니다. 여기 코드는 다음과 같습니다Node.js 웹 스크랩 인증

var request = require('request'); 
var cheerio = require('cheerio'); 

var credentials = { 
    username: 'kevin', 
    password: 'secret' 
}; 

request.post({ 
    uri: 'http://yourwebsite.com/login', 
    headers: { 'content-type': 'application/x-www-form-urlencoded' }, 
    body: require('querystring').stringify(credentials) 
}, function(err, res, body){ 
    if(err) { 
     callback.call(null, new Error('Login failed')); 
     return; 
    } 
}); 

그래서 로그인 후 나는 필드 ID로 자격 증명으로 사용자 이름과 암호를 대체하는 건가요 내가 긁어하고 싶은 말은.? 또는 필드 이름입니까? 또한, 양식에서 제출 (단추)을 누르는 부분은 어디에 있습니까? 편집

: 그래서 로그인 후 내가 긁어하고 싶은 말은

var cheerio = require('cheerio'); 
var request = require('request'); 


var credentials = { 
    acct: '....', 
    pw: '.....' 
}; 

request.post({ 
    uri: 'https://news.ycombinator.com/login?whence=news', 
    headers: { 'content-type': 'application/x-www-form-urlencoded' }, 
    body: require('querystring').stringify(credentials) 
}, function(err, res, body){  

    request('https://news.ycombinator.com', function(err, res, body) { 
     if(err) { 
      callback.call(null, new Error('Request failed')); 
      return; 
     } 

     var $ = cheerio.load(body); 
     var text = $('.pagetop').text(); 

     console.log(text); 
    }); 
}); 
+0

[_Charles Proxy_] (http://www.charlesproxy.com/)와 같은 것을 설치하십시오. 웹 브라우저에서 직접 요청하십시오. 무엇이 서버로 보내지는지보십시오. 그럼'node.js' 코드에서 보내야 할 것이 무엇인지에 대한 좋은 아이디어를 얻을 수있을 것입니다. –

+0

감사합니다. – user1452530

답변

0

내가 함께 자격 증명으로 사용자 이름과 암호를 대체하는 건가요 : 여기 내가 입어 다른 사이트의 전체 코드입니다. 현장 ID? 또는 필드 이름입니까?

이 HTML 형식이었고,이 입력 텍스트 필드는 username 당신이 지금처럼 password에 대한 키를했을 당신의 credentials 객체에 다음 usernamepassword 이름이 있다면.

또한 양식에서 제출 (버튼)을 누르는 부분은 어디입니까?

제출 버튼을 누르지 않고 HTTP 요청을하고 있습니다. 제출 단추에는 종종 다른 양식 필드 입력과 같은 이름이 있습니다. 포함 시키려면 credentials 개체에 추가하십시오.

+0

입력 텍스트 필드 이름을 "user [email]"로 설정하면 어떨까요? Form 필드 입력 이름을 자격 증명에 추가해 보겠습니다. – user1452530

+0

@ user1452530이 경우 키 주위에 따옴표를 넣으십시오. 'var credentials = { 'user [email]': '[email protected]'} ' – Brad

+0

어떤 이유로 로그인하지 않습니다. 다른 사이트의 예제를 사용하여 코드를 업데이트했습니다. – user1452530