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

    2017-02-03

Log in to reply
 

Looks like your connection to 테스티드 was lost, please wait while we try to reconnect.