Puppeteer는 Google이 개발한 Node.js 라이브러리로, 웹 브라우저를 제어하고 웹 페이지를 스크래핑하거나 자동화하는 데 사용되는 도구입니다. Puppeteer는 Chromium 기반의 Headless 브라우저(실제 브라우저 창을 표시하지 않는 브라우저)를 제어하며, 웹 페이지의 동작과 상호작용을 프로그래밍적으로 조작할 수 있게 해줍니다.
주요 특징:
사용 사례:
Puppeteer는 브라우저의 동작을 프로그래밍적으로 제어할 수 있어, 웹 스크래핑, 자동화 테스트, 데이터 수집 등 다양한 분야에서 활용됩니다. Node.js 환경에서 사용되며, puppeteer 라이브러리를 설치하여 사용할 수 있습니다.
$$eval() 과 $eval()
$$eval()과 $eval()은 각각 다수의 엘리먼트를 평가하거나, 단일 엘리먼트를 평가할 때 사용됩니다.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless:"new"});
const page = await browser.newPage();
await page.goto('https://example.com');
const elements = await page.$$eval('h1', h1Elements => {
return h1Elements.map(h1 => h1.textContent);
});
console.log(elements); // 출력 배열: ['Example Domain']
await browser.close();
})();
2. $eval(): 이 함수는 페이지 내에서 특정한 함수를 실행하여 단일 엘리먼트의 값을 추출하거나 처리할 수 있습니다. 아의 예제에서 $eval('h1', ...)은 첫 번째로 발견된 <h1> 엘리먼트를 선택하고, 선택된 엘리먼트를 처리하는 함수를 제공합니다. 이 함수는 h1Element라는 인자로 엘리먼트 자체를 받아오며, 해당 엘리먼트의 텍스트 콘텐츠를 추출합니다.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless:"new"});
const page = await browser.newPage();
await page.goto('https://example.com');
const textContent = await page.$eval('h1', element => {
return element.textContent;
});
console.log(textContent); // 출력: 'Example Domain'
await browser.close();
})();
요약하면, $$eval()은 여러 엘리먼트를 배열로 처리하고, $eval()은 단일 엘리먼트를 처리하는 데 사용됩니다.
위의 두 예제는 IIFE ( Immediately Invoked Function Expression) 으로 정의 된 것입니다.
CommonJS module 와 ES module (2) | 2023.11.01 |
---|---|
innerHTML, innerText, textContent 비교 (0) | 2023.08.27 |
cheerio 와 puffeteer 의 사용법 및 장단점 (0) | 2023.08.27 |
FormData 객체 활용하기 (2) | 2023.07.08 |
VS Code 코드 추천 확장 프로그램 (extensions) (1) | 2023.07.08 |