Puppeteer는 Chrome이나 Chromium을 컨트롤할 수 있게 돕는 Node 라이브러리다.
기본적으로 *Headless 모드로 실행된다.
SPA 크롤링, 테스트 자동화 등에 유용하게 사용할 수 있다.
*Headless 모드 : 가시적인 화면 없이 동작하는 모드
puppeteer을 활용하여 캠핑장 예약 매크로 프로그램을 작성해보았다.
(간단하게 만든 캠핑장 예약 페이지에서 실행해보니 잘 작동된다.)
-
Node.js는 설치가 되어있다는 가정 하에 진행한다.
프로젝트 폴더에 puppeteer을 설치해준다.
npm i puppeteer #설치
프로젝트 폴더 내에 js 파일을 생성한 후 코드를 작성해준다.
const puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch({ headless: false }); //가시적으로 확인하기 위해 false 설정
const page = await browser.newPage(); //페이지 생성
//1. 로그인
await page.goto('로그인 페이지 url'); //로그인 페이지로 이동
await page.type('#id','아이디');
await page.type('#password','비밀번호');
await page.click('button[type=submit]'); //로그인 버튼 클릭
await page.waitForNavigation(); //일시 대기
//2. 예약
await page.goto('예약 페이지 url'); //예약 페이지로 이동
await page.click('#td-yyyy-mm-dd'); //yyyy-mm-dd 형식의 날짜 데이터
await page.click('#village_num'); //테라스 선택
await page.click('#area_num'); //구역 선택
await page.click('#submit'); //예약 버튼 클릭
} catch(err) {
console.log(err);
}
}) ();
터미널창에서 해당 프로그램을 실행해준다.
node 프로그램명.js
[Puppetter Github]
https://github.com/puppeteer/puppeteer
GitHub - puppeteer/puppeteer: Headless Chrome Node.js API
Headless Chrome Node.js API. Contribute to puppeteer/puppeteer development by creating an account on GitHub.
github.com
//정리
//페이지 생성
const page = await browser.newPage();
//페이지 이동
page.goto('url');
//id, class로 클릭
page.click('id or class 선택자');
//해당 id를 가진 입력창에 변수를 대입
page.type('#아이디',변수);
//일시 대기
page.waitForNavigation();
반응형