정책

Node.js로 웹 스크래핑 시작하기! 자바스크립트로 원하는 데이터 뽑아오기

mindlab091908 2025. 7. 25. 15:38
반응형

 

✔️ 웹 스크래핑이란?

웹 스크래핑이란 웹 페이지에서 원하는 데이터를 추출하는 작업을 말합니다. 예를 들어 다음과 같은 정보들을 수집할 수 있어요.

  • 쇼핑몰 상품의 이름, 가격, 후기
  • 뉴스 사이트의 기사 제목, 본문, 작성일
  • 날씨 사이트의 오늘의 날씨, 최고·최저 기온
  • 블로그 글의 제목, 작성자, 조회 수 등

이처럼 사용자가 원하는 정보만 골라내어 자동으로 저장하거나 가공할 수 있기 때문에 많은 분야에서 유용하게 활용됩니다.


🤖 웹 크롤링과의 차이점은?

웹 스크래핑과 비슷한 용어로 **웹 크롤링(Web Crawling)**이 있습니다.
두 개념은 비슷하지만 약간의 차이가 있어요.

구분 웹 스크래핑 웹 크롤링

목적 특정 데이터 추출 전체 사이트 구조 파악 및 링크 수집
방식 원하는 영역만 수집 사이트 전체를 순회하며 링크를 따라감
예시 상품명, 가격 추출 모든 페이지 링크 수집 후 전체 저장

웹 스크래핑은 '부분 추출', 웹 크롤링은 '전체 탐색'이라고 생각하면 이해하기 쉬워요.
보통은 크롤러(또는 스파이더)라는 프로그램이 크롤링을 통해 데이터를 수집하고, 그중 필요한 정보만 스크래핑하는 구조입니다.


🧰 Node.js로 웹 스크래핑 준비하기

자바스크립트는 원래 웹 브라우저에서 동작하는 언어이지만, Node.js를 사용하면 서버 측에서도 실행할 수 있습니다.
즉, 브라우저 없이도 데이터를 요청하고 가공할 수 있는 환경을 만들어주는 거죠.

1. Node.js 설치

Node.js가 없다면 먼저 설치해 주세요. 아래 공식 홈페이지에서 운영체제에 맞는 설치 파일을 다운로드할 수 있습니다.

👉 https://nodejs.org

설치가 완료되면 아래 명령어로 정상 설치 여부를 확인합니다.

node -v
npm -v

둘 다 버전이 출력되면 준비 완료!


2. 프로젝트 폴더 생성

웹 스크래핑 코드를 관리할 새 폴더를 만들고, 패키지 매니저를 초기화합니다.

mkdir scraper_test
cd scraper_test
npm init -y

package.json 파일이 생성되며, 앞으로 설치할 라이브러리 목록이 이곳에 저장됩니다.


3. 필요한 패키지 설치

웹 스크래핑을 위한 두 가지 핵심 라이브러리를 설치합니다.

  • axios: HTTP 요청을 보내기 위한 라이브러리
  • cheerio: HTML을 파싱하고 원하는 정보를 jQuery처럼 추출하는 라이브러리
npm install axios cheerio

설치가 끝나면 본격적인 코딩을 시작할 수 있습니다!


💻 웹 스크래핑 실전 예제

이제 실제 웹사이트에서 데이터를 추출하는 간단한 예제를 작성해봅시다.

✔️ 목표

에누리(enuri.com)의 노트북 상품 페이지에서

  • 상품명
  • 최저가

이 두 가지 정보를 스크래핑해 보겠습니다.

✔️ 코드

const axios = require("axios");
const cheerio = require("cheerio");

const getHtml = async () => {
  try {
    const html = await axios.get("https://www.enuri.com/detail.jsp?modelno=120367900");
    const $ = cheerio.load(html.data);

    let title = $("h2.prodinfo__tit").text().trim();
    let lowprice = $("div.box__line2").find("span.tx_price em").text().trim();

    console.log("상품명: ", title);
    console.log("최저가: ", lowprice);
  } catch (error) {
    console.error("에러 발생:", error.message);
  }
};

getHtml();

✔️ 코드 해설

  • axios.get(...): 해당 URL의 HTML 코드를 비동기적으로 가져옵니다.
  • cheerio.load(html.data): HTML을 파싱해서 jQuery처럼 조작할 수 있도록 만들어줍니다.
  • $("선택자").text(): 원하는 요소의 텍스트를 추출합니다.

이 코드를 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.
(웹페이지 구조가 바뀌지 않았다면요!)

상품명: LG전자 울트라PC 15U50Q-GX30K
최저가: 699,000

🔍 셀렉터 찾는 팁

스크래핑에서 가장 중요한 건 바로 **정확한 셀렉터(selector)**를 찾는 것입니다.
이를 위해 크롬 개발자 도구(F12 또는 마우스 우클릭 → 검사)를 사용하세요.

  1. 원하는 요소 위에서 우클릭 → "검사"
  2. HTML 구조를 확인
  3. 고유하거나 특정한 클래스/ID 사용

예: <h2 class="prodinfo__tit">상품명</h2>
이 경우 $("h2.prodinfo__tit").text()로 추출 가능


⚠️ 웹 스크래핑 시 주의사항

웹 스크래핑은 매우 유용하지만, 다음 사항은 꼭 유의해야 합니다.

  1. robots.txt 확인
    웹사이트가 스크래핑을 허용하는지 확인하는 파일입니다. /robots.txt 경로에서 확인 가능
  2. 서비스 이용약관 위반 주의
    일부 사이트는 데이터 무단 수집을 금지하고 있습니다.
  3. 과도한 요청 금지
    너무 자주 요청하면 서버에 부하를 주거나 차단될 수 있습니다. setTimeout, delay, proxy 등을 적절히 사용하세요.
  4. 사이트 구조 변경에 대비
    셀렉터가 바뀌면 코드가 작동하지 않기 때문에 정기적인 점검이 필요합니다.

✅ 마무리

오늘은 Node.js 환경에서 자바스크립트를 활용해 웹 스크래핑을 시작하는 방법을 알아보았습니다.
코드를 따라 해보셨다면, 이미 여러분은 기본적인 웹 스크래핑 개발자가 되신 거예요!

웹 스크래핑은 단순히 데이터를 긁어오는 기술이 아니라,
정보를 자동화하고 데이터 기반의 의사결정을 가능하게 만드는 강력한 무기입니다.

📦 다음 스텝으로는 다음과 같은 주제를 연습해보세요.

  • 여러 상품 페이지에서 반복적으로 정보 추출하기 (반복문, 배열 활용)
  • 스크래핑한 데이터를 CSV나 엑셀로 저장하기
  • 스케줄링을 통해 정기적으로 정보 수집하기 (node-cron 등)

 

반응형