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.jsresult>>> hello world!
casperjs 설치
npm install -g casperjs
공식 홈페이지에 있는 예제
//hello2.jsvar 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.jsvar 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 파일에는 보통 상수와 설정에 관한 내용을 넣는다.