PhantomJs와 CasperJs

웹사이트를 돌아다니며 정보를 긁어오는 프로그램을 작성할 때는 여러 가지 고려할 요소가많습니다. 로그인을 한 후의 데이터를 얻거나 봇이 접근하기 어렵게 짜여져 있거나 웹페이지가 렌더링된 다음의 데이터를 얻어야 하는 경우들이 그 예이죠.
그런 상황들을 쉽게 컨트롤 할 수 있게 하는 몇 가지 도구들이 있는데 그것들이 바로 PhantomJs와 CasperJs입니다.
PhantomJs는 화면이 없는 상태에서 커멘드 라인드로 사용하는 브라우저이고, CasperJs는 PhantomJs를 쉽게 쓸 수 있게 하는 라이브러리입니다.

PhantomJs는 렌더링 엔진으로 WebKit엔진을 사용하는데, 이 말은 애플의 사파리 브라우저와 거의 동일한 환경이라는 뜻입니다.
PhantomJs에서 할 수 있는 일에는 여러 가지가 있는데, 특정 URL로 접속했을 때의 스크린샷을 찍을 수도 있고 화면의 특정 엘리먼트를 마우스 클릭하는 이벤트를 실행할 수도 있습니다.
PhantomJs의 공식 웹사이트는 다음과 같습니다.
http://phantomjs.org/

CasperJs는 PhantomJs를 사용할 때 보다 쉽게 사용할 수 있도록 하는 라이브러리입니다.
CasperJs의 공식 웹사이트는 다음과 같습니다.
http://casperjs.org/

Node.js가 컴퓨터에 설치되어 있다고 가정하고 cmd를 켜서 다음의 명령을 입력합니다.
npm install -g phantomjs
npm install -g casperjs

이제 casperJs를 이용해서 간단한 화면 캡쳐 프로그램을 작성해 보겠습니다.
var casper = require('casper').create();  //casper 객체를 생성합니다.
casper.start();
casper.open('https://sidea510.blogspot.kr/');  //페이지를 엽니다.
casper.then(function(){
    casper.capture('screenshot.png');  //화면을 캡쳐합니다.
});
casper.run();  
//프로그램을 실행합니다.

프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

댓글

댓글 쓰기

이 블로그의 인기 게시물

PhantomJS로 Blogger댓글 조회 프로그램 작성하기

CasperJs로 Pixabay 크롤러 만들기