nodejs 자체를 크롤링에 많이 이용하지만.


로그인 이후 페이지 컨텐츠의 크롤링등에는

casperjs 모듈을 많이 사용한다.


그 이유중에 하나가 PhantomJS 브라우져를 이용하여

유저의 액션을 유사하게 흉내낼 수 있기 때문이다.

예를 들어 로그인 이후 페이지에 대한 크롤링 등~


여기서는 티스토리 블러그의 관리자에 접속하여


로그인 이후 화면을 캡쳐해 본다.




----- node.js 가 설치되어 있다고 가정하고 진행한다. -----


1. 모듈 설치 및 환경설정



 shell> npm install phantomjs

 shell> npm install casperjs


 // 심볼릭 링크의 경로는 각 서버 마다 다를 수 있음.

 shell> ln -s /usr/local/nodejs/node-v6.10.3-linux-x64/bin/phantomjs /usr/bin/phantomjs

 shell> ln -s /usr/local/nodejs/node-v6.10.3-linux-x64/bin/casperjs /usr/bin/casperjs




2. Sample Code



 var casper = require("casper");


 var casper = require('casper').create({verbose: true, logLevel: "debug"});

 casper.start();


 casper.open('http://[개인 티스토리 블러그 주소]/admin/center/');

 casper.wait(1000, function()

 {

    this.echo( "----------------------------------" );

    this.echo("I've waited for 1 second.");

    this.echo( "----------------------------------" );

 });


 casper.then(

    function()

    {

        //  this.echo( "----------------------------------\n\n" );

        //  this.echo( this.getElementsInfo('form#authForm') );

        //  this.echo( "\n\n----------------------------------\n\n" );

        //  this.echo( this.getHTML('form#authForm') );

        //  this.echo( "\n\n----------------------------------" );


        this.fillSelectors('form#authForm', {

                'input[name="loginId"]':    '[티스토리 아이디]',

                'input[name="password"]':   '[티스토리 비밀번호]'

            }, true);

    }

 );


 // 캡처하기

 casper.then(function(){

   casper.capture('capture.png', {

     top:0, left:0, width:1024, height:768

   });

 });

 

 casper.run();




3. 기타


 캡쳐이미지 한글깨짐 처리

 http://blog.daum.net/2734/133

 샘플코드 작성 참고 URL

 http://lyasee.tistory.com/2