본문 바로가기

Back-end/JS

phantomjs CapserJS를 통한 크롤링 정리 -1

phantomjs CapserJS를 통한 크롤링 정리 -1

PhantomJS

= Headless Brower
돔 렌더링을 하지 않는 브라우저

할 수 있는것

  • page manipulation
  • user interaction
  • capture data
  • render image

Manipulating pages

  • form submission
  • button click
  • input fields
  • user logins
  • wait for ajax
  • queue url's

casper JS(phantomjs helper)

phantomjs의 네비게이션 유틸리티

  • navigation steps
  • filling form
  • clicking links
  • take screenshots


시작하기

phantomjs 설치

npm install phantom phantomjs -g

npm을 통해 설치하지만 npm 패키지는 아니다.

"use strict";
console.log('hello world!');
phantom.exit();
hantomjs hello.js
result>>> hello world!

casperjs 설치

npm install -g casperjs

공식 홈페이지에 있는 예제

//hello2.js
var casper = require('casper').create();
casper.start('http://casperjs.org/');
casper.then(function() {
this.echo('First Page: ' + this.getTitle());
});
casper.thenOpen('http://phantomjs.org', function() {
this.echo('Second Page: ' + this.getTitle());
});
casper.run();
casperjs hello2.js

결과값
First Page: CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS
Second Page: PhantomJS | PhantomJS

deeper casperjs

  • create()
  • start()
  • run()
  • then()
  • echo()

프로젝트 폴더를 만든 후
common_method.js파일을 만들어줍니다.

// .
var casper = require('casper').create();
/////////////////////
///// .
/////
/////////////////////
//
create.run();

run

캐스퍼를의 명령을 실행시키며
casper.run(function(){ callback}) 형태로
콜백을 지정해 줄 수있다.

echo

echo는 내용을 출력해준다.

start

start의 경우에는 가져올 url을 지정해주고 가져오며
아래 같은 형태로 로드됬을 경우의 콜백을 설정해 줄수 있다.
casper.start(url, funciton(){
this.echo("im load");
});

var casper = require('casper').create();
casper.start('http://en.wikipedia.org/', function(){
// head
this.echo(this.getTitle())
});
casper.then(function(){
this.echo(this.getCurrentUrl());
});
casper.run(function () {
this.echo('Done').exit();
});

결과
Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/Main_Page
Done

옵션파일 만들어주기

options.js파일을 만든다.

//options.js
var casper = require("casper").create({
verbose: true, //
logLevel: 'debug', // debug, info, warning, error 4
pageSettings: {
loadImages: false, //
loadPlugins: false, // (Quicktime )
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'//
},
clientScripts: ["/vendor/jquery.min.js"] // script
});

이외에 options 파일에는 보통 상수와 설정에 관한 내용을 넣는다.