puppeteer란? (퍼피티어란?)
puppeteer(퍼피티어)는 dev tools 프로토콜을 통해 크롬을 제어할 수 있는 하이레벨 API를 제공하는 노드 라이브러리입니다.
puppeteer 기본적으로 headless(UI가 없는상태)로 실행되지만, 비헤드리스 크롬 또는 크로미움으로 실행되도록 수행도 가능합니다.
주로 웹자동화, 크롤링을 위해 사용하는 라이브러리이며, selenium과 비슷한 역할을 한다고 생각하면 됩니다.
다만 selenium(셀레니움)과 다른 점은 selenium은 다양한 언어로 사용할 수 있는 반면, puppeteer는 javascript 만으로 코드를 작성할 수 있습니다.
selenium보다 더 나은점은 좀 더 상세한 조작 및 성능 측정 등이 가능하다는 점입니다.
브라우저에서 수동으로 할 수 있는 대부분의 일은 puppeteer를 사용하여 할 수 있습니다.
다음은 puppeteer에서 할 수 있는 작업들입니다.
- 페이지의 스크린샷 및 PDF를 생성합니다.
- SPA(Single-Page Application)를 크롤링하여 미리 렌더링된 콘텐츠(즉, "SSR"(Server-Side Rendering).
양식 제출, UI 테스트, 키보드 입력 등을 자동화합니다.
- 최신 자동화된 테스트 환경을 만듭니다. 최신 자바스크립트 및 브라우저 기능을 사용하여 크롬의 최신 버전에서 직접 테스트를 실행합니다.
- 사이트의 타임라인 추적을 캡처하여 성능 문제를 진단할 수 있습니다.
- 크롬 확장 플러그인을 테스트할 수 있습니다.
puppeteer 설치방법
윈도에서 puppeteer를 사용하려면 puppeteer-core 패키지를 다운로드 받으면 됩니다.
아래 명령어를 통해 npm 프로젝트에서 npm으로 라이브러리를 다운로드 받을 수 있습니다.
npm i puppeteer-core --save
puppeteer 예제 코드, puppeteer 사용방법, 사용법
간단한 예제코드를 작성해보겠습니다.
github.com 에 접속해서 페이지 스크린샷을 이미지 파일로 만들어보겠습니다.
index.js파일을 만들고, 아래와 같이 코드를 작성해줍니다.
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
//headless:false로 변경하면 브라우저 창이 뜨는것을 볼 수 있습니다.
headless:true,
// 크롬이 설치된 위치를 입력해줍니다. 엣지 등 크로미움 기반의 웹브라우저도 지원됩니다.
executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
});
const page = await browser.newPage();
await page.goto('https://github.com');
//fullPage:false로 하면 현재 브라우저에서 보이는 영역만 스크린캡쳐를 뜨게 됩니다.
await page.screenshot({path: 'example.png', fullPage:true});
await browser.close();
})();
이를 실행하면 다음과 같이 test.js 파일이 있는 위치에 example.png파일이 생성된것을 볼 수 있습니다.
총평
옛날에는 phantomjs를 사용했었다가 개발이 중단되면서 웹크롤링이 가능한 것을 찾아보니 발견한 라이브러리입니다.
selenium도 있지만, 제대로 동작하지 않는 사이트들도 있어서 다른 대안을 찾다보니 puppeteer도 핫한 라이브러리인것으로 보이네요.
편한부분중에 하나가 chromedriver.exe와 같은 웹드라이버를 설치하지 않아도 실행이 된다는게 좋습니다.
크롬이 업데이트 될때마다 해당 파일을 다운로드 받아야 되는게 여간 귀찮았는데, npm 패키지로 한방에 관리가 되니 편합니다.
크롤링이 제대로 안되는 사이트도 잘 크롤링 되는거 같고, 계속해서 잘 사용해보아야겠습니다.
puppeteer란, puppeteer 사용법, puppeter 사용법, 웹자동화, 웹스크래핑, 웹사이트 스크래핑, 크롤링, 셀레늄, selenium, 매크로, 자바스크립트 매크로, 퍼피티어
#puppeteer,#퍼피티어,#javascript,#script,#selenium,#crawl,#crawling,#크롤링,#자바스크립트,#웹자동화,#자동화,#스크립트,#셀리니움,#셀레늄,#매크로
'개발후기-라이브러리' 카테고리의 다른 글
안드로이드개발 - 인앱결제 (0) | 2022.05.05 |
---|---|
ionic framework - in app 결제 (0) | 2022.05.05 |
jQuery(제이쿼리) ajax와 fetch와 Axios 차이점 비교, jquery ajax vs fetch vs axios (0) | 2021.11.20 |
jquery 개발후기 (0) | 2021.08.12 |
mermaid js 사용후기 (0) | 2021.07.25 |
댓글