글쓰기 메뉴
0 0
Square

Reason why I chose Nightmare over phantomjs, casperjs, selenium and ...

테스트용이 아니라 자동화, 스크랩핑(automation, scraping) 용도로 헤드리스 브라우저 - headless browser: 그래픽 인터페이스가 없고 프로그래밍으로 컨트롤 가능한 브라우저 - 를 살펴보고 있는데 종류도 많고 문서 읽어보면 각각의 장점도 분명해서 선택이 어렵다.
이럴땐 사용자도 많고 소스도 오랜시간 검증된 안전한 선택이 좋겠다.
하지만 ㅋㅋㅋ 결론적으로 이번 플젝에 Nightmare 를 선택한 이유는..
Nightmare 공홈이 너무 귀여워서 ㅋㅋㅋㅋ
ㅋㅋㅋ 개귀염
phantomjs 를 엔진으로 쓰다가 2배가량 빠르다는 Electron 으로 엔진을 교체했다는 솔깃한 얘기는 덤.
콜백지옥을 경험하지 않아도 되는 코딩 스타일도 덤.
react 로 작성된 웹페이지와 같이 특정 노드를 대기할 수 있는 메소드가 있는 것도 덤.
- 끝 -
http://www.nightmarejs.org/

http://www.seleniumhq.org/

http://casperjs.org/
http://phantomjs.org/
https://electron.atom.io/

https://github.com/dhamaniasad/HeadlessBrowsers [헤드리스 브라우저 리스트 - outdated]

https://en.wikipedia.org/wiki/Headless_browser [헤드리스 브라우저 위키]
0 0

우분투 14.04 wkhtmltopdf 설치

wkhtmltopdf 는 HTML 페이지를 PDF 로 만들어주는 오픈소스 도구로 Qt WebKit 엔진을 사용한다. 자매품인 wkhtmltoimage 는 같은 방식으로 HTML 을 다양한 형식의 이미지로 변환시켜준다.
Ubuntu 14.04 에서 apt-get 으로 wkhtmltopdf 패키지를 설치할 수 있으나 Qt 가 wkhtmltopdf 에 맟춰 패치되지 않았다면 몇 가지 기능이 제한된다. 예를 들면 HTML 에 있는 링크가 PDF 에 사라지는 등의 오류가 있을 수 있다. 관련 옵션은 --enable-external-link 인데 Qt 가 패치되어 있지 않으면 해당 옵션을 켤 수 없다. 
그러니 wkhtmltopdf 홈페이지에서 컴파일되어 있는 바이너리를 다운받아 설치하도록 하자. 만사가 편하다.
* 우분투 서버를 사용하고 있을 경우 X 시스템과 폰트관련 패키지가 설치되어 있지 않다. 이럴 경우 먼저 필요한 패키지와 폰트를 설치하자.
폰트는 마음에 드는 패키지를 찾아 설치하면 되는데 별도의 설정없이 바로 사용할 수 있는 한글 폰트는 unfonts, baekmuk, nanum 정도 되겠다. 각각 패키지는 아래와 같다. (우분투위키에서 CJK 폰트 참고)
은폰트 - unfonts
백묵폰트 - baekmuk
나눔폰트 - nanum
폰트툴과 폰트가 설치 된 후 wkhtmltopdf 다운로드 페이지에서 Ubuntu Trusty (14.04.1) 버전(64-bit)의 .deb 파일을 다운받아 아래와 같이 설치한다. 
설치 후 아래와 같이 확인할 수 있다.
webpage/url 이라는 주소의 웹페이지를 save.pdf 로 변환하는 명령어 예제는 다음과 같다. 자세한 옵션은 man wkhtmltopdf 로 확인할 수 있다.
--print-media-type
스크린 타입이 아니라 프린트 미디어로 PDF를 렌더한다.
--page-size
페이지 사이즈를 지정한다. Letter, A4, A3 등의 형식으로 지정할 수 있다.
* 공식 홈페이지에서 전체 리스트 링크를 제공하고 있으나 현재 사용이 연결이 되지 않는다. 소스에서 확인한 전체 리스트는 이 곳에 적어둔다.
* --page-width, --page-height 로 페이지 크기를 지정할 수 있다 
--dpi
dpi (dots per inch) 값을 지정한다.
-T, -B, -L, -R
상(Top), 하(Bottom), 좌(Left), 우(Right) 여백을 지정한다.
요즘 웹페이지의 PDF 변환이나 이미지 캡처는 요즘 PhantomJS 를 사용한 방식이 훨씬 많이 소개되고 있다. 의존패키지에 대한 고려나 설정에 대한 부담감이 없기 때문일텐데 개인적으로 wkhtmlto* 를 오래전부터 사용하고 있어서 정리해봤다.