크롤링 puppeteer

SSAD·2023년 2월 15일
0

BackEnd

목록 보기
24/44
post-custom-banner

크롤링

주기적으로 스크래핑을 여러번 하는 것을 말함

크롤링 주의사항

크롤링하고자 하는 사이트 url/robots.txt 확인

  • Allow에 해당하는 항목은 크롤링이 허용된 항목
  • Disallow에 할당된 항목은 여러 이슈가 발생할수 있음
  • Allow 해당 항목이라도 서버 과부하을 유발하거나 상업적 판매 행위등은 금지되어 있음

puppeteer

npm

  • 구글에서 만든 노드 라이브러리로 Headless Chrome 또는 Chrominum을 제어할 수 있음

설치

yarn add puppeteer

코드 예시

import puppeteer from "puppeteer";

async function startCrawling() {
  // 가상 브라우저를 변수에 저장
  // 가상 브라우저를 통해 유저처럼 동작
  // headless : true : 눈에 보이지 않게 가상 브라우저가 띄워지지 않음
  // headless : false : 가상브라우저가 우리눈에 보임
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  await page.setViewport({ width: 1280, height: 720 }); // 열릴 브라우저 크기 설정
  await page.goto("https://www.goodchoice.kr/product/search/2"); // 해당 주소로 이동함
  await page.waitForTimeout(1000); // 페이지 전부 로딩될때까지 기다림

  const stage = await page.$eval(
    "#poduct_list_area > li:nth-child(2) > a > div > div.name > div > span",
    (el) => el.textContent
  );

  const location = await page.$eval(
    "#poduct_list_area > li:nth-child(2) > a > div > div.name > p:nth-child(4)",
    (el) => el.textContent
  );

  const price = await page.$eval(
    "#poduct_list_area > li:nth-child(2) > a > div > div.price > p > b",
    (el) => el.textContent
  );

  console.log(stage);
  console.log(location.trim());
  console.log(price);
}

startCrawling();
profile
learn !
post-custom-banner

0개의 댓글