Nightmare.js

개요

Nightmare is a high-level browser automation library.

Electron Chromium 기반의 브라우저 자동화 라이브러리입니다.
브라우저 자동화 테스트 및 크롤링/스크래핑 등에 활용할 수 있습니다.

필요

Node.js / Window 7이상, macOS, Linux

설치 / 실행
npm install nightmare  
node example.js  
예제1
const Nightmare = require('nightmare');

// Electron 화면을 보면서 작업을 확인할 수 있다.
// show 옵션이 없으면 프로세스가 백그라운드로 실행된다.
const nightmare = Nightmare({ show: true });

// 네이버에서 검색해본다.
nightmare  
  .goto('http://www.naver.com/') // 네이버에 접속한다.
  .type('#query', 'phpschool') // 검색어를 입력한다.
  .click('#search_btn') // 검색 버튼을 클릭한다.
  .wait('#main_pack') // 검색 결과의 레이어를 기다린다.
  // 프로세스를 종료한다.
  // end()를 하지 않으면 작업이 완료돼도 프로세스가 종료되지 않고 계속 실행된다.
  // 하나의 프로세스에서 계속 작업을 이어 간다면 수행하지 않아야 한다.
  .end()
  .then(result => console.log(result))
  .catch(error => console.error(error));
예제2
// 검색한 결과의 사이트로 가서 게시판 첫 글 제목을 가져온다.
nightmare  
  .goto('http://www.naver.com/')
  .type('#query', 'phpschool')
  .click('#search_btn')
  .wait('#main_pack')
  // 사이트 검색 결과의 첫 번째 링크 주소를 가져온다.
  .evaluate(() => document.querySelector('#main_pack div.nsite > ul > li a').href)
  .then(result => nightmare
    .goto(result) // 링크 주소로 이동한다.
    .click('#contentWrap div.main_talkbox a') // 게시판 링크를 클릭한다.
    .wait('form[name="fboardlist"]') // 게시판 목록을 기다린다.
    // 목록에서 첫 번째 글 제목을 가져온다.
    .evaluate(() => document.querySelector('form[name="fboardlist"] > table.board_table > tbody > tr[class=""] > td.subject a').innerHTML)
    .end())
  .then(result => console.log(result)) // 결과를 콘솔에 출력한다.
  .catch(error => console.error(error));
링크

https://github.com/segmentio/nightmare
https://github.com/rosshinkley/nightmare-examples