Puppeteer를 이용한 크롤링(Crawling) - HTML

it/Node.js 2020. 3. 9. 00:13 Posted by 하얀나다

크롤링의 진정한 목적은 HTML 파싱이 아니겠는가.

 

일단 HTML을 한번 받아와 보자.

 

일단 쳐라.

 

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

const main = async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(
    "https://sports.news.naver.com/kbaseball/record/index.nhn?category=kbo",
    //wait옵션을 지정해줄수 있다.
    { waitUntil: "networkidle2" }
  );
  //일단 5초간 대기
  await page.waitFor(5000);
  const html = await page.content();
  //역시 Screenshot과 마찬가지로 현재 폴드의 KBO.html 로 저장 하였다.
  fs.writeFileSync("KBO.html", html);
  await browser.close();
};
main();

 

내가 좋아하는 야구의 순위를 확인 하기 위한 페이지를 가져와 보았다.

 

우선 오늘은 페이지를 가져 오는 정도에서 만족하고 다음에 하부 파싱 하는걸 작성하겠다.

 

아래는 waitUntil 의 옵션이다.

(출처 : http://magic.wickedmiso.com/138)

옵 션

설   명

 load

 · load 이벤트가 시작되면 탐색이 완료되는 것으로 간주한다.

 docntentload

 · HTML 문서가 완전히 로드 및 파싱되었을 경우(DOMContentLoaded 이벤트) 탐색이 완료되는 것으로 간주한다.

 networkidle0

 · 최소한 500ms 동안 네트워크 연결이 0개 이상 없을때 탐색이 완료되는 것으로 간주한다. 

 networkidle2

 · 최소한 500ms 동안 두 개 이상의 네트워 연결이 없을 때 탐색이 완료되는 것으로 간주한다.