본문 바로가기

Javascript/Node

[Node] Crawling puppeteer를 활용하여 웹 페이지의 데이터를 Crawling하기

728x90
반응형

관련 포스트

- ScreenShot Crawling

developing-move.tistory.com/173

 

[Node] Crawling puppeteer 활용하여 웹페이지에 스크린샷을 자동으로 생성하기

관련 포스트 - HTML Crawling developing-move.tistory.com/174 [Node] Crawling puppeteer를 활용하여 웹 페이지의 데이터를 Crawling하기 원하는 페이지에서 html 소스를 가져와 파일 시스템을 이용하여 실제..

developing-move.tistory.com

- pdf Crawling

developing-move.tistory.com/175

 

[Node] Crawling puppeteer를 활용하여 웹 페이지를 pdf로 변환 및 저장

Crawling 마지막으로 원하는 웹 페이지를 pdf로 변환하여 저장하는 것이다. 예시소스 const puppeteer = require('puppeteer'); // puppeteer를 활용한 코드는 모두 비동기 코드로 이루어진다. const main = asyn..

developing-move.tistory.com

 

원하는 페이지에서 html 소스를 가져와 파일 시스템을 이용하여 실제 파일로 출력하는 로직이다.

각 라인에 대한 설명은 주석에 있다.

 

예시 소스

const puppeteer = require('puppeteer');
const fs = require('fs');

// 파일시스템을 이용하여 실제 파일을 출력하는 로직을 작성

// puppeteer를 활용한 코드는 모두 비동기 코드로 이루어진다.
const main = async () => {
    // puppeteer 실행
    const browser = await puppeteer.launch();
    // 새로운 페이지를 만듦
    const page = await browser.newPage();
    // 파싱할 데이터가 있는 페이지로 이동 / waitUntil을 사용하여 언제까지 기다릴 것인지 명시
    await page.goto('https://example.com', {waitUntil : 'networkidle2'});
    // 로드 타임이 오래걸릴 경우 임의로 기다리게 하는 메소드 
    // 외부의 리소스(이미지, 자바스크립트 파일 등) 로드 타임이 많이 걸리는 경우
    await page.waitFor(6000);
    // 파싱하기 위해 html 데이터를 가져옴(핵심 로직)
    const html = await page.content()
    // 할당된 데이터를 google.html이라는 파일 명으로 파일을 작성
    fs.writeFileSync("example.html", html);
    // 메모리 누수를 방지하기 위해 종료
    await browser.close;
}
main();

728x90
반응형